@@ -146,17 +146,31 @@ module Prelude where
146146 (==) :: a -> a -> Boolean
147147 (/=) :: a -> a -> Boolean
148148
149+ foreign import refEq
150+ "function refEq(r1) {\
151+ \ return function(r2) {\
152+ \ return r1 === r2;\
153+ \ };\
154+ \}" :: forall a. a -> a -> Boolean
155+
156+ foreign import refIneq
157+ "function refIneq(r1) {\
158+ \ return function(r2) {\
159+ \ return r1 !== r2;\
160+ \ };\
161+ \}" :: forall a. a -> a -> Boolean
162+
149163 instance eqString :: Eq String where
150− (==) = Data.Eq.Unsafe.refEq
151− (/=) = Data.Eq.Unsafe.refIneq
164+ (==) = refEq
165+ (/=) = refIneq
152166
153167 instance eqNumber :: Eq Number where
154− (==) = Data.Eq.Unsafe.refEq
155− (/=) = Data.Eq.Unsafe.refIneq
168+ (==) = refEq
169+ (/=) = refIneq
156170
157171 instance eqBoolean :: Eq Boolean where
158− (==) = Data.Eq.Unsafe.refEq
159− (/=) = Data.Eq.Unsafe.refIneq
172+ (==) = refEq
173+ (/=) = refIneq
160174
161175 instance eqArray :: (Eq a) => Eq [a] where
162176 (==) [] [] = true
@@ -321,39 +335,15 @@ module Prelude where
321335
322336module Data.Eq where
323337
324− import qualified Data.Eq.Unsafe as Unsafe
325−
326338 data Ref a = Ref a
327339
328340 liftRef :: forall a b. (a -> a -> b) -> Ref a -> Ref a -> b
329341 liftRef f (Ref x) (Ref y) = f x y
330342
331− refEq :: forall a. Ref a -> Ref a -> Boolean
332− refEq = liftRef Unsafe.refEq
333−
334− refIneq :: forall a. Ref a -> Ref a -> Boolean
335− refIneq = liftRef Unsafe.refIneq
336−
337343 instance eqRef :: Eq (Ref a) where
338− (==) = refEq
339− (/=) = refIneq
344+ (==) = liftRef refEq
345+ (/=) = liftRef refIneq
340346
341−module Data.Eq.Unsafe where
342−
343− foreign import refEq
344− "function refEq(r1) {\
345− \ return function(r2) {\
346− \ return r1 === r2;\
347− \ };\
348− \}" :: forall a. a -> a -> Boolean
349−
350− foreign import refIneq
351− "function refIneq(r1) {\
352− \ return function(r2) {\
353− \ return r1 !== r2;\
354− \ };\
355− \}" :: forall a. a -> a -> Boolean
356−
357347module Control.Monad.Eff where
358348
359349 foreign import data Eff :: # ! -> * -> *