Skip to content
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

Investigate existing robust type checking/inference algorithms #26

Closed
polybuildr opened this issue May 11, 2017 · 1 comment
Closed

Comments

@polybuildr
Copy link
Owner

polybuildr commented May 11, 2017

As @bollu suggested in #25:

I strongly suggest not going down the route and trying to monkey patch a type system.
Implement any of:

or some flavour thereof.

This should definitely be investigated after 0.1.0.

@polybuildr
Copy link
Owner Author

So I spent a few days trying to read research papers and even a PhD thesis or two. There are some really great ideas out there. From Algorithm W to Algorithm M to the Generalizing Hindley-Milner Type Inference
Algorithms paper, finally reaching the PhD thesis that Facebook's Flow is based on: Type Inference in the Presence of Subtyping: from Theory to Practice (pdf) and then being pointed to (on the #proglangdesign IRC channel on Freenode) some more recent work in the area, another PhD thesis: Algebraic Subtyping (pdf).

The last two seem particularly relevant to what I'm trying to do, given that Facebook's Flow is solving pretty much the same problem as my type checker/inferencer.

However, the issue with all these papers is that I'm too unfamiliar with the notation and background to understand the ideas presented in them, and I'm not currently willing to spend time on doing the necessary background work. I'm closing this issue as "stalled" as of now. :/

If someone familiar with this stuff or willing to pick up this stuff wants to implement the typechecker, please feel free to announce and reopen! :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant