Hindley–Milner type system
E230805
The Hindley–Milner type system is a classical polymorphic type system used in many functional programming languages, notable for enabling type inference without explicit type annotations.
All labels observed (2)
| Label | Occurrences |
|---|---|
| Hindley–Milner type system canonical | 2 |
| Damas–Milner type system | 1 |
How this entity was disambiguated
This entity first appeared as the object of triple T2092388 — resolving that mention is where its identity was fixed. The disambiguator weighed these candidate entities and picked the highlighted one (or “None”, minting a new entity). This is how homonymy is resolved: the same surface form can point to different entities.
Target entity: Hindley–Milner type system Context triple: [Robin Milner, knownFor, Hindley–Milner type system]
-
A.
Hoare logic
Hoare logic is a formal system in computer science used to reason rigorously about the correctness of computer programs using logical assertions about program states.
-
B.
Haskell
Haskell is a statically typed, purely functional programming language known for its strong type system, lazy evaluation, and use in both academic research and industry.
-
C.
Revised^n Report on the Algorithmic Language Scheme
The Revised^n Report on the Algorithmic Language Scheme is the series of formal documents that define and evolve the official specification of the Scheme programming language.
-
D.
lambda calculus
Lambda calculus is a formal system in mathematical logic and computer science that uses function abstraction and application to investigate computation and serves as a foundational model for programming languages.
-
E.
Church–Rosser property
The Church–Rosser property is a confluence property of rewriting systems stating that if an expression can be reduced in different ways, all reduction paths can be further reduced to a common equivalent form.
- F. None of above. chosen
- G. Unsure - the case is ambiguous/there is not enough information to decide.
Target entity: Hindley–Milner type system Target entity description: The Hindley–Milner type system is a classical polymorphic type system used in many functional programming languages, notable for enabling type inference without explicit type annotations.
-
A.
Hoare logic
Hoare logic is a formal system in computer science used to reason rigorously about the correctness of computer programs using logical assertions about program states.
-
B.
Haskell
Haskell is a statically typed, purely functional programming language known for its strong type system, lazy evaluation, and use in both academic research and industry.
-
C.
Revised^n Report on the Algorithmic Language Scheme
The Revised^n Report on the Algorithmic Language Scheme is the series of formal documents that define and evolve the official specification of the Scheme programming language.
-
D.
lambda calculus
Lambda calculus is a formal system in mathematical logic and computer science that uses function abstraction and application to investigate computation and serves as a foundational model for programming languages.
-
E.
Church–Rosser property
The Church–Rosser property is a confluence property of rewriting systems stating that if an expression can be reduced in different ways, all reduction paths can be further reduced to a common equivalent form.
- F. None of above. chosen
Statements (50)
| Predicate | Object |
|---|---|
| instanceOf |
polymorphic type system
ⓘ
static type system ⓘ type system ⓘ |
| alsoKnownAs |
Hindley–Milner type system
ⓘ
surface form:
Damas–Milner type system
HM type system ⓘ |
| appliedIn |
functional programming languages
ⓘ
statically typed languages with type inference ⓘ |
| basedOn | lambda calculus ⓘ |
| coreConcept |
generalization at let-bindings
ⓘ
monomorphic type variables in local bindings without let ⓘ most general unifier ⓘ unification-based type inference ⓘ |
| enables | type inference without explicit type annotations ⓘ |
| field |
programming languages
ⓘ
type theory ⓘ |
| goal | assign principal types to all typable expressions ⓘ |
| hasAlgorithm |
Algorithm J
ⓘ
Algorithm W ⓘ |
| hasFeature |
completeness for its language fragment
ⓘ
let-polymorphism ⓘ parametric polymorphism ⓘ principal types ⓘ rank-1 polymorphism ⓘ soundness ⓘ type inference ⓘ |
| hasLimitation |
does not support GADTs natively
ⓘ
does not support full higher-rank polymorphism ⓘ does not support type classes natively ⓘ |
| influenced |
type system of Elm
ⓘ
type system of F# ⓘ type system of Haskell ⓘ type system of PureScript ⓘ type system of ReasonML ⓘ |
| namedAfter |
J. Roger Hindley
ⓘ
Robin Milner ⓘ |
| property |
decidable type inference
ⓘ
principal type property ⓘ |
| relatedTo |
System F
ⓘ
simply typed lambda calculus ⓘ |
| restrictionOf | System F ⓘ |
| supports |
polymorphic functions
ⓘ
type generalization ⓘ type instantiation ⓘ |
| typicalComplexity | polynomial time type inference ⓘ |
| usedIn |
Haskell core type system
ⓘ
ML ⓘ
surface form:
ML programming language family
Miranda programming language ⓘ OCaml ⓘ Standard ML ⓘ early versions of Haskell ⓘ |
How these facts were elicited
The pipeline generated the facts above by prompting gpt-5.1 with this entity's name + description and the instruction below.
You are a knowledge base construction expert. Given a subject entity and a description of it, return factual statements that you know for the subject as a JSON list of dictionaries(triples), where keys must be "subject", "predicate" and "object". The number of facts may be very high, between 25 to 50 or more, for very popular subjects. For less popular subjects, the number of facts can be very low, like 5 or 10. # Requirements - If you don't know the subject at all, return an empty list. - If the subject is not a named entity, return an empty list. - Include at least one triple where predicate is "instanceOf". - Do not get too wordy. - Separate several objects into multiple triples with one object.
Subject: Hindley–Milner type system Description of subject: The Hindley–Milner type system is a classical polymorphic type system used in many functional programming languages, notable for enabling type inference without explicit type annotations.
Referenced by (3)
Full triples — surface form annotated when it differs from this entity's canonical label.