General binding constructs
- newtype VarId = VarId {}
- showVar :: VarId -> String
- data Variable a where
- data Lambda a where
- alphaEqM :: ExprEq dom => AST (Lambda :+: (Variable :+: dom)) a -> AST (Lambda :+: (Variable :+: dom)) b -> Reader [(VarId, VarId)] Bool
- alphaEq :: ExprEq dom => AST (Lambda :+: (Variable :+: dom)) a -> AST (Lambda :+: (Variable :+: dom)) b -> Bool
- evalLambdaM :: (Eval dom, MonadReader [(VarId, Dynamic)] m) => ASTF (Lambda :+: (Variable :+: dom)) a -> m a
- evalLambda :: Eval dom => ASTF (Lambda :+: (Variable :+: dom)) a -> a
- class NAry a dom | a -> dom where
- data Let a where
Documentation
Variable identifier
Variables
Lambda binding
alphaEqM :: ExprEq dom => AST (Lambda :+: (Variable :+: dom)) a -> AST (Lambda :+: (Variable :+: dom)) b -> Reader [(VarId, VarId)] BoolSource
Alpha-equivalence on Lambda
expressions. Free variables are taken to be
equvalent if they have the same identifier.
alphaEq :: ExprEq dom => AST (Lambda :+: (Variable :+: dom)) a -> AST (Lambda :+: (Variable :+: dom)) b -> BoolSource
evalLambdaM :: (Eval dom, MonadReader [(VarId, Dynamic)] m) => ASTF (Lambda :+: (Variable :+: dom)) a -> m aSource
Evaluation of possibly open LambdaAST
expressions
evalLambda :: Eval dom => ASTF (Lambda :+: (Variable :+: dom)) a -> aSource
Evaluation of closed Lambda
expressions