@@ -162,17 +162,14 @@ module Prelude where
162 -- Referential equality
162 -- Referential equality
163 data Ref a = Ref a
163 data Ref a = Ref a
165− foreign import refEq "function refEq(r1) {\
165+ liftRef :: forall a b. (a -> a -> b) -> Ref a -> Ref a -> b
166− \ return function(r2) {\
166+ liftRef f (Ref x) (Ref y) = f x y
167− \ return r1.values[0] === r2.values[0];\
167+
169− \}" :: forall a. Ref a -> Ref a -> Boolean
168+ refEq :: forall a. Ref a -> Ref a -> Boolean
170−
169+ refEq = liftRef unsafeRefEq
171− foreign import refIneq "function refIneq(r1) {\
170+
172− \ return function(r2) {\
173− \ return r1.values[0] !== r2.values[0];\
175− \}" :: forall a. Ref a -> Ref a -> Boolean
171+ refIneq :: forall a. Ref a -> Ref a -> Boolean
172+ refIneq = liftRef unsafeRefIneq
177 foreign import unsafeRefEq "function unsafeRefEq(r1) {\
174 foreign import unsafeRefEq "function unsafeRefEq(r1) {\
178 \ return function(r2) {\
175 \ return function(r2) {\