1 module PreludeBuiltin where
3 import Prel ( (&&), atan2 )
15 import PS ( _PackedString, _unpackPS )
20 instance (Eq a) => Eq [a] where
22 (x:xs) == (y:ys) = x == y && xs == ys
25 xs /= ys = if (xs == ys) then False else True
27 instance (Ord a) => Ord [a] where
28 a < b = case _tagCmp a b of { _LT -> True; _EQ -> False; _GT -> False }
29 a <= b = case _tagCmp a b of { _LT -> True; _EQ -> True; _GT -> False }
30 a >= b = case _tagCmp a b of { _LT -> False; _EQ -> True; _GT -> True }
31 a > b = case _tagCmp a b of { _LT -> False; _EQ -> False; _GT -> True }
33 max a b = case _tagCmp a b of { _LT -> b; _EQ -> a; _GT -> a }
34 min a b = case _tagCmp a b of { _LT -> a; _EQ -> a; _GT -> b }
37 _tagCmp (x:xs) [] = _GT
38 _tagCmp [] (y:ys) = _LT
39 _tagCmp (x:xs) (y:ys) = case _tagCmp x y of
44 instance (Text a) => Text [a] where
45 readsPrec p = readList
46 showsPrec p xs = showList xs
47 readList = _readList (readsPrec 0)
48 showList = _showList (showsPrec 0)
50 {-# SPECIALIZE instance Eq [Char] #-}
51 {-# SPECIALIZE instance Ord [Char] #-}
52 {-# SPECIALIZE instance Text [Char] #-}
54 {-# SPECIALIZE instance Eq [Int] #-}
55 {-# SPECIALIZE instance Ord [Int] #-}
56 {-# SPECIALIZE instance Text [Int] #-}
58 {-# SPECIALIZE instance Eq [Integer] #-}
59 {-# SPECIALIZE instance Ord [Integer] #-}
60 {-# SPECIALIZE instance Text [Integer] #-}
62 --NO:{-# SPECIALIZE instance Eq [Float] #-}
63 --NO:{-# SPECIALIZE instance Ord [Float] #-}
64 --NO:{-# SPECIALIZE instance Text [Float] #-}
66 {-# SPECIALIZE instance Eq [Double] #-}
67 {-# SPECIALIZE instance Ord [Double] #-}
68 {-# SPECIALIZE instance Text [Double] #-}
70 {-# SPECIALIZE instance Eq [Bool] #-}
71 {-# SPECIALIZE instance Ord [Bool] #-}
72 {-# SPECIALIZE instance Text [Bool] #-}
74 {-# SPECIALIZE instance Eq [[Char]] #-}
75 {-# SPECIALIZE instance Ord [[Char]] #-}
76 {-# SPECIALIZE instance Text [[Char]] #-}
78 {-# SPECIALIZE instance Eq [[Int]] #-}
79 {-# SPECIALIZE instance Ord [[Int]] #-}
80 {-# SPECIALIZE instance Text [[Int]] #-}
82 {-# SPECIALIZE instance Eq [Complex Double] #-}
83 {-# SPECIALIZE instance Text [Complex Double] #-}
85 {-# SPECIALIZE instance Eq [(Int,Int)] #-}
87 #if defined(__OVERLAPPING_INSTANCES__)
88 instance _CCallable [Char]
89 instance _CReturnable [Char]
92 #if defined(__UNBOXED_INSTANCES__)
94 {-# GENERATE_SPECS instance a :: Eq [a] #-}
95 {-# GENERATE_SPECS instance a :: Ord [a] #-}
96 {-# GENERATE_SPECS instance a :: Text [a] #-}
98 #if defined(__OVERLAPPING_INSTANCES__)
99 instance _CCallable [Char#]
100 instance _CReturnable [Char#]