HM type system

E807599

The HM type system is a classical polymorphic type system used in many functional programming languages, known for its ability to infer the most general types without requiring explicit type annotations.

All labels observed (1)

Label Occurrences
HM type system canonical 1

How this entity was disambiguated

Statements (49)

Predicate Object
instanceOf polymorphic type system
type system
alsoKnownAs Damas–Milner type system
Hindley–Milner type system
applicationDomain compiler design
functional programming languages
program verification
basedOn lambda calculus
simply typed lambda calculus with polymorphism
coreConcept generalization and instantiation of types
polymorphic let-binding
type schemes
ensures type safety for well-typed programs in its language fragment
extendedBy Damas–Milner type system
feature completeness for its language fragment
let-polymorphism
parametric polymorphism
principal type property
principal types
rank-1 polymorphism
soundness
type inference
formalizedBy Luis Damas
generalizes simply typed lambda calculus
inferenceAlgorithm Algorithm W
unification-based type inference
influenced type system of Elm
type system of F#
type system of Haskell
type system of ML-family languages
type system of PureScript
linked to: PureScript
namedAfter J. Roger Hindley
Robin Milner
property decidable type inference
principal type can be computed
restriction no higher-kinded types in the original system
no higher-rank polymorphism beyond rank 1
no subtyping in the original system
no type classes in the original system
supports automatic type inference without annotations
most general unifier based inference
usedIn Elm (core subset)
linked to: Elm

F# (core subset)
linked to: F#

Haskell (core subset)
linked to: Haskell

ML
OCaml
PureScript (core subset)
linked to: purescript-prelude

Standard ML
yearFormalized 1984

How these facts were elicited

Referenced by (1)

Full triples — surface form annotated when it differs from this entity's canonical label.