Since the featured article says that OCaml and F # use output like Damas-Milner, which, as I thought, is a standard algorithm, that is, an algorithm that does not allow variations, how are the two features related?
The Damascus-Milner Algorithm (also known as the W Algorithm) can be extended, and, indeed, all its practically relevant implementations have added many extensions, including OCaml and F #.
Is it that Damas-Milner is the foundation on which type inference systems are built, but each of them modifies Damas-Milner based on input?
Right, yes. In particular, OCaml has many different experimental extensions to the Damas-Milner core, including polymorphic options, objects, first-class modules. F # is simpler, but also has some extensions that OCaml does not have, primarily overloading (mostly operators).
I do not believe that there are summary articles describing systems of all type OCaml or F #. Indeed, I do not know a document that describes the F # type system today. For OCaml, you have many different documents, each of which covers various aspects. I would start my own publications with Jacques Garrigue , and then follow the links in it.
Jon harrop
source share