= Let polymorphism
<Let polymorphism> gives an eligible `let`-bound name a <type scheme>, allowing fresh instantiation at each use. In the pure <Hindley-Milner type system>, generalize the inferred type's <type variables> that are free in that type and not free in the current <typing context>. The <identity function> example under <type variable> meets this condition. A <lambda abstraction>'s parameter receives one monomorphic type shared by its uses. Languages with mutation, such as <Standard ML> with <ML reference types>, need additional restrictions on generalization.
Back to article page