Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds new
letrec
term. Type-checking is surprisingly easy:The hard part is evaluation. I think this would require lazy evaluation. At the moment any letrec definitions just evaluate to
#error
, so you can check thatletrec
type-checks, but can't run itTodos
def
items. Will leave for a later PRletrec
definitions are safe to evaluate. I believe we can use the algorithm from A Practical Mode System for Recursive Definitions. Will leave for a later PRletrec
be spelledletrec
(as in Scheme) orlet rec
(as in ML)?;
, but I cannot figure out how to do so without LALRPOP complaining about ambiguity, so for now the separator is,