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