blob: 811ddc1fa70bd9a40d2e1297a58c6f49d813fb4c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.String
-- {{{ Num literals
newtype N = N Int deriving (Show,Eq)
instance Num N where
fromInteger 0 = error "0"
fromInteger 1 = N 0
fromInteger _ = N 1
f x = case x of
1 -> False
0 -> True
g x = case x of
1 -> False
_ -> case x of
0 -> True
_ -> error "No match"
testNum = do
print $ g (N 0)
print $ f (N 0)
-- }}}
-- {{{ IsString literals
newtype S = S String deriving Eq
instance IsString S where
fromString [] = error "[]"
fromString (_:_) = S "."
fs x = case x of
"." -> False
"" -> True
gs x = case x of
"." -> False
_ -> case x of
"" -> True
_ -> error "No match"
testIsString = do
print $ gs (S ".")
print $ fs (S ".")
-- }}}
main = do { testNum; testIsString }
|