two new functions in the PGF API: mkAbs, unAbs

This commit is contained in:
krasimir
2010-07-31 16:40:16 +00:00
parent 39e83436e2
commit 71ea541765
2 changed files with 11 additions and 0 deletions

View File

@@ -43,6 +43,7 @@ module PGF(
-- ** Expr -- ** Expr
Expr, Expr,
showExpr, readExpr, showExpr, readExpr,
mkAbs, unAbs,
mkApp, unApp, mkApp, unApp,
mkStr, unStr, mkStr, unStr,
mkInt, unInt, mkInt, unInt,

View File

@@ -1,6 +1,7 @@
module PGF.Expr(Tree, BindType(..), Expr(..), Literal(..), Patt(..), Equation(..), module PGF.Expr(Tree, BindType(..), Expr(..), Literal(..), Patt(..), Equation(..),
readExpr, showExpr, pExpr, pBinds, ppExpr, ppPatt, pattScope, readExpr, showExpr, pExpr, pBinds, ppExpr, ppPatt, pattScope,
mkAbs, unAbs,
mkApp, unApp, mkApp, unApp,
mkStr, unStr, mkStr, unStr,
mkInt, unInt, mkInt, unInt,
@@ -96,6 +97,15 @@ showExpr vars = PP.render . ppExpr 0 vars
instance Read Expr where instance Read Expr where
readsPrec _ = RP.readP_to_S pExpr 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 -- | Constructs an expression by applying a function to a list of expressions
mkApp :: CId -> [Expr] -> Expr mkApp :: CId -> [Expr] -> Expr
mkApp f es = foldl EApp (EFun f) es mkApp f es = foldl EApp (EFun f) es