@@ -332,12 +332,21 @@ module Prelude
332332 LT -> false
333333 _ -> true
334334
335− foreign import unsafeCompare
336− "function unsafeCompare(n1) {\
337− \ return function(n2) {\
338− \ return n1 < n2 ? LT.value : n1 > n2 ? GT.value : EQ.value;\
335+ foreign import unsafeCompareImpl
336+ "function unsafeCompareImpl(lt) {\
337+ \ return function (eq) {\
338+ \ return function (gt) {\
339+ \ return function (x) {\
340+ \ return function (y) {\
341+ \ return x < y ? lt : x > y ? gt : eq;\
342+ \ };\
343+ \ };\
344+ \ };\
339345 \ };\
340− \}" :: forall a. a -> a -> Ordering
346+ \}" :: forall a. Ordering -> Ordering -> Ordering -> a -> a -> Ordering
347+
348+ unsafeCompare :: forall a. a -> a -> Ordering
349+ unsafeCompare = unsafeCompareImpl LT EQ GT
341350
342351 instance ordUnit :: Ord Unit where
343352 compare (Unit {}) (Unit {}) = EQ