$ ./lambda-repl
[λ]: Two = \f.\x.f (f x)
[λ]: Two Two
|> reductions: 5
|> time: 0.000069s
|> term: λx. λx'. x (x (x (x x')))
lambda-repl
accepts a list of files with lambda definitions.
the default reduction strategy is call-by-value and the default normalisation is normal form. this can be change with the following commands:\
[λ]: !strong
=> 'normal from' normalisation[λ]: !weak
=> 'weak head normal form' normalisation[λ]: !strict
=> 'call-by-value' evaluation[λ]: !lazy
=> 'call-by-name' evaluation
\[var]. [λ-term]
=> abstraction[λ-term] [λ-term]
=> application[var] = [λ-term]
=> definition
requires gnu readline
make