1 module PreludeCore ( Bool(..) ) where
9 import List ( (++), map, foldr )
10 import PS ( _PackedString, _unpackPS )
13 ----------------------------------------------------------------------
14 instance Eq Bool where
23 ----------------------------------------------------------------------
24 instance Ord Bool where
25 a < b = case _tagCmp a b of { _LT -> True; _EQ -> False; _GT -> False }
26 a <= b = case _tagCmp a b of { _LT -> True; _EQ -> True; _GT -> False }
27 a >= b = case _tagCmp a b of { _LT -> False; _EQ -> True; _GT -> True }
28 a > b = case _tagCmp a b of { _LT -> False; _EQ -> False; _GT -> True }
30 max a b = case _tagCmp a b of { _LT -> b; _EQ -> a; _GT -> a }
31 min a b = case _tagCmp a b of { _LT -> a; _EQ -> a; _GT -> b }
33 _tagCmp True True = _EQ
34 _tagCmp True False = _GT
35 _tagCmp False True = _LT
36 _tagCmp False False = _EQ
38 ----------------------------------------------------------------------
39 instance Ix Bool where
40 range (l,u) = map bdecode [(bencode l) .. (bencode u)]
41 index (l,u) i = (bencode i) - (bencode l)
42 inRange (l,u) i = (bencode i) >= (bencode l) && (bencode i) <= (bencode u)
44 bencode :: Bool -> Int
48 bdecode :: Int -> Bool
49 bdecode b = if b == 0 then False
50 else if b == 1 then True
51 else error "decode Bool\n"
53 ----------------------------------------------------------------------
54 instance Enum Bool where
55 enumFrom False = [False, True]
56 enumFrom True = [True]
58 enumFromThen False True = [False, True]
59 enumFromThen True False = [True, False]
60 enumFromThen b _ = bs where bs = b : bs
62 ----------------------------------------------------------------------
63 instance Text Bool where
66 (\ b -> [ (False, c) | ("False", c) <- lex b ]
67 ++ [ (True, c) | ("True", c) <- lex b ])
69 showsPrec d p r = (if p then "True" else "False") ++ r