Commit Graph

11 Commits (f73e78fcdbe50bcf91705ebcfc540bcc55c0cb0c)

Author SHA1 Message Date
James T. Martin f73e78fcdb
Cleanup: fix warnings, fix indentation, upgrade dependencies. 2021-03-05 19:04:06 -08:00
James T. Martin 79e054700b
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.
2020-11-03 13:43:43 -08:00
James T. Martin 3b2dd67fe7
Make the parser more forgiving, re-add `let`, update README. 2020-11-02 15:59:35 -08:00
James T. Martin 3fd494a398
Use Text instead of String in expressions. 2019-12-11 19:21:54 -08:00
James T. Martin 25658f370a
Complexity was getting out of hand. Beginning a rewrite. Added tests. 2019-12-11 18:29:28 -08:00
James T. Martin 807a0cb1ee Massive 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".
2019-08-29 20:46:42 -07:00
James T. Martin 7cb27e8e9a Modified to use dependent types and 'Drop' instead of a var index. 2019-08-23 18:38:57 -07:00
James T. Martin 9cda0ef9c2 Cleaned up the code, removed dep on recursion-schemes. 2019-08-17 00:01:23 -07:00
James T. Martin 43e4a77cdc Parse directly to Expr without any intermediate Ast type. 2019-08-16 22:34:09 -07:00
James T. Martin 70b3b7e051 I fixed it! Also deleted some unused code, and refactored a little. 2019-08-15 13:11:17 -07:00
James T. Martin fd98d499fe Initial commit. Some terms are still not evaluated correctly. 2019-08-15 10:42:24 -07:00