summaryrefslogtreecommitdiff
path: root/src/runtime/haskell
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/haskell')
-rw-r--r--src/runtime/haskell/PGF.hs1
-rw-r--r--src/runtime/haskell/PGF/Expr.hs10
2 files changed, 11 insertions, 0 deletions
diff --git a/src/runtime/haskell/PGF.hs b/src/runtime/haskell/PGF.hs
index 652399f69..9bdfd8b23 100644
--- a/src/runtime/haskell/PGF.hs
+++ b/src/runtime/haskell/PGF.hs
@@ -43,6 +43,7 @@ module PGF(
-- ** Expr
Expr,
showExpr, readExpr,
+ mkAbs, unAbs,
mkApp, unApp,
mkStr, unStr,
mkInt, unInt,
diff --git a/src/runtime/haskell/PGF/Expr.hs b/src/runtime/haskell/PGF/Expr.hs
index 2202a20c4..554726815 100644
--- a/src/runtime/haskell/PGF/Expr.hs
+++ b/src/runtime/haskell/PGF/Expr.hs
@@ -1,6 +1,7 @@
module PGF.Expr(Tree, BindType(..), Expr(..), Literal(..), Patt(..), Equation(..),
readExpr, showExpr, pExpr, pBinds, ppExpr, ppPatt, pattScope,
+ mkAbs, unAbs,
mkApp, unApp,
mkStr, unStr,
mkInt, unInt,
@@ -96,6 +97,15 @@ showExpr vars = PP.render . ppExpr 0 vars
instance Read Expr where
readsPrec _ = RP.readP_to_S pExpr
+mkAbs :: BindType -> CId -> Expr -> Expr
+mkAbs = EAbs
+
+unAbs :: Expr -> Maybe (BindType, CId, Expr)
+unAbs (EAbs bt x e) = Just (bt,x,e)
+unAbs (ETyped e ty) = unAbs e
+unAbs (EImplArg e) = unAbs e
+unAbs _ = Nothing
+
-- | Constructs an expression by applying a function to a list of expressions
mkApp :: CId -> [Expr] -> Expr
mkApp f es = foldl EApp (EFun f) es