lambda-calculator-3.1.1.0: A lambda calculus interpreter
Safe HaskellSafe-Inferred
LanguageHaskell2010

Language.Lambda.Untyped.Eval

Synopsis

Documentation

data EvalState name Source #

The evaluation state

Constructors

EvalState 

Fields

evalExpr :: (Pretty name, Ord name) => LambdaExpr name -> Eval name (LambdaExpr name) Source #

Evaluate an expression

subGlobals :: Ord name => Map name (LambdaExpr name) -> LambdaExpr name -> LambdaExpr name Source #

Look up free vars that have global bindings and substitute them

betaReduce :: (Eq name, Pretty name) => LambdaExpr name -> LambdaExpr name -> Eval name (LambdaExpr name) Source #

Function application

alphaConvert :: Eq name => [name] -> LambdaExpr name -> Eval name (LambdaExpr name) Source #

Rename abstraction parameters to avoid name captures

etaConvert :: Eq n => LambdaExpr n -> LambdaExpr n Source #

Eliminite superfluous abstractions

freeVarsOf :: Eq n => LambdaExpr n -> [n] Source #

Find the free variables in an expression