summaryrefslogtreecommitdiff
path: root/src/runtime/haskell-bind/PGF2
diff options
context:
space:
mode:
authorKrasimir Angelov <kr.angelov@gmail.com>2017-09-04 14:49:44 +0200
committerKrasimir Angelov <kr.angelov@gmail.com>2017-09-04 14:49:44 +0200
commit71c4b4a24640a0bc593527660bda16f61e729cc0 (patch)
tree150fa28ece964fc139df06a1b492358bf17b8324 /src/runtime/haskell-bind/PGF2
parentda091824a38c789b875156b89382c9f44debdc18 (diff)
instance Eq Expr in the Haskell binding
Diffstat (limited to 'src/runtime/haskell-bind/PGF2')
-rw-r--r--src/runtime/haskell-bind/PGF2/Expr.hsc7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/runtime/haskell-bind/PGF2/Expr.hsc b/src/runtime/haskell-bind/PGF2/Expr.hsc
index af3afeef5..a03a24be3 100644
--- a/src/runtime/haskell-bind/PGF2/Expr.hsc
+++ b/src/runtime/haskell-bind/PGF2/Expr.hsc
@@ -34,6 +34,13 @@ data Expr = Expr {expr :: PgfExpr, touchExpr :: Touch}
instance Show Expr where
show = showExpr []
+instance Eq Expr where
+ (Expr e1 e1_touch) == (Expr e2 e2_touch) =
+ unsafePerformIO $ do
+ res <- pgf_expr_eq e1 e2
+ e1_touch >> e2_touch
+ return (res /= 0)
+
-- | Constructs an expression by lambda abstraction
mkAbs :: BindType -> CId -> Expr -> Expr
mkAbs bind_type var (Expr body bodyTouch) =