mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-29 22:42:52 -06:00
an API for constructing HOAS expressions
This commit is contained in:
@@ -28,8 +28,9 @@ module PGF2 (-- * PGF
|
|||||||
|
|
||||||
-- ** Expressions
|
-- ** Expressions
|
||||||
Expr(..), Literal(..), showExpr, readExpr,
|
Expr(..), Literal(..), showExpr, readExpr,
|
||||||
mkAbs, unAbs,
|
mkAbs, unAbs, Var,
|
||||||
mkApp, unApp, unapply,
|
mkApp, unApp, unapply,
|
||||||
|
mkVar, unVar,
|
||||||
mkStr, unStr,
|
mkStr, unStr,
|
||||||
mkInt, unInt,
|
mkInt, unInt,
|
||||||
mkDouble, unDouble,
|
mkDouble, unDouble,
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
module PGF2.Expr(Var, Cat, Fun,
|
module PGF2.Expr(Var, Cat, Fun, Var,
|
||||||
BindType(..), Literal(..), Expr(..),
|
BindType(..), Literal(..), Expr(..),
|
||||||
Type(..), Hypo,
|
Type(..), Hypo,
|
||||||
Patt(..), Equation(..),
|
Patt(..), Equation(..),
|
||||||
|
|
||||||
mkAbs, unAbs,
|
mkAbs, unAbs,
|
||||||
mkApp, unApp, unapply,
|
mkApp, unApp, unapply,
|
||||||
|
mkVar, unVar,
|
||||||
mkStr, unStr,
|
mkStr, unStr,
|
||||||
mkInt, unInt,
|
mkInt, unInt,
|
||||||
mkDouble, unDouble,
|
mkDouble, unDouble,
|
||||||
@@ -107,6 +108,17 @@ unapply = extract []
|
|||||||
extract es (EImplArg e) = extract es e
|
extract es (EImplArg e) = extract es e
|
||||||
extract es h = (h,es)
|
extract es h = (h,es)
|
||||||
|
|
||||||
|
-- | Constructs a variable expression from a de Bruijn index
|
||||||
|
mkVar :: Int -> Expr
|
||||||
|
mkVar = EVar
|
||||||
|
|
||||||
|
-- | Extracts the de Bruijn index of a variable
|
||||||
|
unVar :: Expr -> Maybe Int
|
||||||
|
unVar (EVar i) = Just i
|
||||||
|
unVar (ETyped e ty) = unVar e
|
||||||
|
unVar (EImplArg e) = unVar e
|
||||||
|
unVar _ = Nothing
|
||||||
|
|
||||||
-- | Constructs an expression from string literal
|
-- | Constructs an expression from string literal
|
||||||
mkStr :: String -> Expr
|
mkStr :: String -> Expr
|
||||||
mkStr s = ELit (LStr s)
|
mkStr s = ELit (LStr s)
|
||||||
|
|||||||
Reference in New Issue
Block a user