Subtype Inference by Example
blog.polybdenum.com
blog.polybdenum.com
As it turns out, Dolan's main contribution wasn't the algorithm (which is overly complex, as proven by Parreaux's simpler implementation), but the type language - the insight that most subtyping constraints can be removed and/or simplified to simple union and intersection types, assuming certain simplifications of the type system (namely: positive/negative types, and distributivity of union/intersection over function types).
https://lptk.github.io/programming/2020/03/26/demystifying-m...
https://dl.acm.org/doi/10.1145/3409006
Parreaux is continuing to work on this problem, and has since removed one of the assumptions/simplifications (positive/negative types) in his work on MLstruct
...but traditional static type systems require large amounts of manual annotation by programmers, making them difficult to work with...
I like to have type annotations, yeah, they can look ugly, but I much rather know what something is rather than have to infer it by myself.Makes reading code a lot easier if you know what you're doing.
Code is read a lot more than is written in my experience, so saving time writing it is optimizing for the wrong thing.
Languages with much inference for me REQUIRE IDEs that help you see what the code is actually doing. Forget about using a text editor or reading a diff and getting what the implications are.
What's the difference between that work decades ago and the work from Stephen Dolan in 2016 cited in this post? Like, what's the thing that is demonstrated now that we didn't have like 30 years ago?