Value restriction

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In functional programming, in particular the ML programming language family, the value restriction means that declarations are only polymorphically generalized if they are syntactic values (also called non-expansive). The value restriction prevents reference cells from holding values of different types and preserves type safety.

See also[edit]


  • Mads Tofte (1988). Operational Semantics and Polymorphic Type Inference. PhD thesis.
  • M. Tofte (1990). "Type inference for polymorphic references".
  • O'Toole (1990). "Type Abstraction Rules for Reference: A Comparison of Four Which Have Achieved Notoriety".
  • Xavier Leroy & Pierre Weis (1991). "Polymorphic type inference and assignment". POPL '91.
  • A. K. Wright (1992). "Typing references by effect inference".
  • My Hoang, John C. Mitchell and Ramesh Viswanathan (1993). "Standard ML-NJ weak polymorphism and imperative constructs".
  • Andrew Wright (1995). "Simple imperative polymorphism". In LISP and Symbolic Computation, p. 343–356.
  • Jacques Garrigue (2004). "Relaxing the Value Restriction".

External links[edit]