git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Lift ref functions to avoid ADT internals in FFI code
daaf973Gary Burgess
prelude/prelude.purs+8−11
@@ -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
164
164
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+
168− \ };\
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];\
174− \ };\
175− \}" :: forall a. Ref a -> Ref a -> Boolean
171+ refIneq :: forall a. Ref a -> Ref a -> Boolean
172+ refIneq = liftRef unsafeRefIneq
176
173
177 foreign import unsafeRefEq "function unsafeRefEq(r1) {\
174 foreign import unsafeRefEq "function unsafeRefEq(r1) {\
178 \ return function(r2) {\
175 \ return function(r2) {\