Safe Haskell | None |
---|
- data Variable a
- data Let a where
- data HOLambda dom p pVar a where
- type HODomain dom p pVar = (HOLambda dom p pVar :+: ((Variable :|| pVar) :+: dom)) :|| p
- type FODomain dom p pVar = (CLambda pVar :+: ((Variable :|| pVar) :+: dom)) :|| p
- type CLambda pVar = SubConstr2 (->) Lambda pVar Top
- class IsHODomain dom p pVar | dom -> p pVar where
- reifyM :: forall dom p pVar a. AST (HODomain dom p pVar) a -> State VarId (AST (FODomain dom p pVar) a)
- reifyTop :: AST (HODomain dom p pVar) a -> AST (FODomain dom p pVar) a
- reify :: (Syntactic a, Domain a ~ HODomain dom p pVar) => a -> ASTF (FODomain dom p pVar) (Internal a)
Documentation
Variables
Equality Variable |
|
StringTree Variable | |
Render Variable | |
Constrained Variable | |
EvalBind Variable | |
Optimize Variable | |
(AlphaEq dom dom dom env, VarEqEnv env) => AlphaEq Variable Variable dom env | |
IsHODomain (HODomain dom p pVar) p pVar |
data HOLambda dom p pVar a whereSource
Higher-order lambda binding
HOLambda :: (p a, pVar a) => (ASTF (HODomain dom p pVar) a -> ASTF (HODomain dom p pVar) b) -> HOLambda dom p pVar (Full (a -> b)) |
IsHODomain (HODomain dom p pVar) p pVar |
type HODomain dom p pVar = (HOLambda dom p pVar :+: ((Variable :|| pVar) :+: dom)) :|| pSource
Adding support for higher-order abstract syntax to a domain
type FODomain dom p pVar = (CLambda pVar :+: ((Variable :|| pVar) :+: dom)) :|| pSource
Equivalent to HODomain
(including type constraints), but using a first-order representation
of binding
type CLambda pVar = SubConstr2 (->) Lambda pVar TopSource
Lambda
with a constraint on the bound variable type
class IsHODomain dom p pVar | dom -> p pVar whereSource
An abstraction of HODomain
IsHODomain (HODomain dom p pVar) p pVar |
reifyM :: forall dom p pVar a. AST (HODomain dom p pVar) a -> State VarId (AST (FODomain dom p pVar) a)Source