Lots of refactors using recursion-schemes, plus hacky code cleanup. A side-effect of this refactoring was that I got `traceEval` for free!James T. Martin2021-03-15 23:56:52 -0700
Make the parser produce a subtly better AST. This is done by requiring applications to be at least 2 terms, and making grouping a syntactic feature instead of a feature of applications.James T. Martin2020-11-03 15:52:04 -0800
Make the printer smarter, separate intermediate AST data type. * The expression printer now knows how to use `let`, multi-argument lambdas and applications, and block arguments when appropriate. * There is a separate type, AbstractSyntax, which separates parsing/printing logic from removing/reintroducing the more advanced syntax described above. * Expression is now its own module because its 'show' depends on AbstractSyntax, and I don't want the ast2expr/expr2ast stuff to be in the same module as the real lambda calculus stuff.James T. Martin2020-11-03 13:29:59 -0800
Complexity was getting out of hand. Beginning a rewrite. Added tests.James T. Martin2019-12-11 18:29:28 -0800
807a0cb1eeMassive refactoring. This project is no longer "just an exercise". * Allows for multiple representations * Evaluation strategies * Type systems. * No longer just the untyped lambda calculus. * No longer "just an experiment".James T. Martin2019-08-29 20:46:42 -0700