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.

Try in SPARQL Jump to: Statements Referenced by

Statements (49)

Predicate Object
instanceOf polymorphic type system
type system
alsoKnownAs Damas–Milner type system NERFINISHED
Hindley–Milner type system NERFINISHED
applicationDomain compiler design
functional programming languages
program verification
basedOn lambda calculus NERFINISHED
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 NERFINISHED
feature completeness for its language fragment
let-polymorphism
parametric polymorphism
principal type property
principal types
rank-1 polymorphism
soundness
type inference
formalizedBy Luis Damas NERFINISHED
generalizes simply typed lambda calculus
inferenceAlgorithm Algorithm W NERFINISHED
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 NERFINISHED
namedAfter J. Roger Hindley NERFINISHED
Robin Milner NERFINISHED
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) NERFINISHED
F# (core subset) NERFINISHED
Haskell (core subset) NERFINISHED
ML NERFINISHED
OCaml NERFINISHED
PureScript (core subset) NERFINISHED
Standard ML NERFINISHED
yearFormalized 1984

Referenced by (1)

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