-
-
Notifications
You must be signed in to change notification settings - Fork 320
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Minor simplifications to typechecker #7450
Conversation
82abed0
to
068b963
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The changes here are correct. The old version was not. foo
is unconditionally called in bar.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The changes here are correct. Because map
is in a nested scope, it should not be generalized. Therefore the assignment of the lambdaset to f
is valid.
068b963
to
9df9353
Compare
@ayazhafiz -- something may have gone wrong with your GPG signature? |
f5961cb
to
8bddbe6
Compare
These are inferred vars, not rigids.
Remove branches on determining how let-bindings are introduced to the scope. This is maybe a little more inefficient, but I think it is a huge simplification. One additional change this required was changing how fx suffixes are checked. The current implementation would add additional constraints for patterns in let bindings conditionally. However, this is unnecessary. I believe it is sufficient to check the fx suffix by running the checks on all introduced symbols after the type is well known (i.e. the body is checked).
This is actually correct - the rigid approach is not. Lambda set variables should be inferred in-scope.
I don't think this assert is actually accurate.
8bddbe6
to
be99b82
Compare
Okay, resolved |
Landing some simplifications ahead of a change to make named type variables where things are known to be a concrete type illegal.
See individual commits for details.