@@ -172,46 +172,53 @@ module Prelude where
172 (==) _ _ = false
172 (==) _ _ = false
173 (/=) xs ys = not (xs == ys)
173 (/=) xs ys = not (xs == ys)
175+ data Ordering = LT | GT | EQ
177+ instance showOrdering :: Show Ordering where
183+ compare :: a -> a -> Ordering
175 infixl 4 <
185 infixl 4 <
187+ (<) :: forall a. (Ord a) => a -> a -> Boolean
188+ (<) a1 a2 = case a1 `compare` a2 of
176 infixl 4 >
192 infixl 4 >
194+ (>) :: forall a. (Ord a) => a -> a -> Boolean
195+ (>) a1 a2 = case a1 `compare` a2 of
177 infixl 4 <=
199 infixl 4 <=
181− (<) :: a -> a -> Boolean
201+ (<=) :: forall a. (Ord a) => a -> a -> Boolean
182− (>) :: a -> a -> Boolean
202+ (<=) a1 a2 = case a1 `compare` a2 of
183− (<=) :: a -> a -> Boolean
203+ GT -> false
184− (>=) :: a -> a -> Boolean
204+ _ -> true
186− foreign import numLess "function numLess(n1) {\
206+ infixl 4 >=
187− \ return function(n2) {\
190− \}" :: Number -> Number -> Boolean
192− foreign import numLessEq "function numLessEq(n1) {\
208+ (>=) :: forall a. (Ord a) => a -> a -> Boolean
193− \ return function(n2) {\
209+ (>=) a1 a2 = case a1 `compare` a2 of
194− \ return n1 <= n2;\
210+ LT -> false
196− \}" :: Number -> Number -> Boolean
198− foreign import numGreater "function numGreater(n1) {\
213+ foreign import numCompare
214+ "function numCompare(n1) {\
199− \ return function(n2) {\
215+ \ return function(n2) {\
200− \ return n1 > n2;\
216+ \ return n1 < n2 ? module.LT : n1 > n2 ? module.GT : module.EQ;\
202− \}" :: Number -> Number -> Boolean
204− foreign import numGreaterEq "function numGreaterEq(n1) {\
205− \ return function(n2) {\
208− \}" :: Number -> Number -> Boolean
218+ \}" :: Number -> Number -> Ordering
210 instance ordNumber :: Ord Number where
220 instance ordNumber :: Ord Number where
211− (<) = numLess
221+ compare = numCompare
216 infixl 10 &
223 infixl 10 &
217 infixl 10 |
224 infixl 10 |