more idiomatic if-statements in pattern matches #7
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.
this implements the suggestions given in #5.
To remove extra
{}
blocks in the translation of multi-equation functions, this introduces a new reordering of patterns: we first check patterns which actually deconstruct something (i.e. which are anIConst
or application), and only then apply the renamings for patterns which consist only of anIVar
.This ensures that even without the
{}
block we won't "leak" variables into the scope of other function equations, since we're guaranteed to already be within at least one if-statement, which is itself its own scope.(tbh, i'm a little sceptical about this idea of reordering patterns; I can't see how it would break anything, and the Codegenerator_Test still runs through fine, but at the very least it feels a little hard to nicely describe what it does in readable notation and without any hand-waving)