Too Long; Didn't Read
Since C# 3.0, developers may declare implicitly typed variables with the type of an initializer. Type inference is a common feature among mainstream programming languages. The de facto type inference discipline adopted in typical functional languages is that of Hindley-Milner’s type system. In this article, I will describe (at a superficial level) the core ideas behind a constraint-based approach to type-inclusion. A constraint language is composed by its own syntactic language, and by the language which we are modelling; C# type is a constraint language.