GF.Command.TreeOperations is now independent from the runtime's internals

This commit is contained in:
Krasimir Angelov
2017-09-05 10:29:02 +02:00
parent 13d8045814
commit 01a8e1b88f
3 changed files with 13 additions and 28 deletions

View File

@@ -47,7 +47,7 @@ module PGF(
Expr,
showExpr, readExpr,
mkAbs, unAbs,
mkApp, unApp,
mkApp, unApp, unapply,
mkStr, unStr,
mkInt, unInt,
mkDouble, unDouble,

View File

@@ -2,7 +2,7 @@ module PGF.Expr(Tree, BindType(..), Expr(..), Literal(..), Patt(..), Equation(..
readExpr, showExpr, pExpr, pBinds, ppExpr, ppPatt, pattScope,
mkAbs, unAbs,
mkApp, unApp, unAppForm,
mkApp, unApp, unapply,
mkStr, unStr,
mkInt, unInt,
mkDouble, unDouble,
@@ -108,13 +108,13 @@ mkApp f es = foldl EApp (EFun f) es
-- | Decomposes an expression into application of function
unApp :: Expr -> Maybe (CId,[Expr])
unApp e = case unAppForm e of
unApp e = case unapply e of
(EFun f,es) -> Just (f,es)
_ -> Nothing
-- | Decomposes an expression into an application of a constructor such as a constant or a metavariable
unAppForm :: Expr -> (Expr,[Expr])
unAppForm = extract []
unapply :: Expr -> (Expr,[Expr])
unapply = extract []
where
extract es f@(EFun _) = (f,es)
extract es (EApp e1 e2) = extract (e2:es) e1