ML is a family of impure
, statically typed
, functional programming language
s with advanced parametric module
systems whose major representatives are Standard ML
and Objective Caml
ML stands for "metalanguage", since it was first developed (at Edinburgh University) as a means for manipulating proofs in LCF (Logic of Computable Functions), the object language using the Curry-Howard isomorphism.
ML supports parametrizable algebraic datatypes, and is particularly well-known for its type inference feature, and its extremely powerful parametrizable module system. Unlike Haskell, ML supports imperative features like destructive update and exceptions directly; however this reduces some of the polymorphism that would otherwise be available in the language (this is the so-called value restriction).
Objective Caml has only one implementation, which is nevertheless quite well-supported; Standard ML has several, including perhaps most notably the industrial-strength Standard ML of New Jersey, Peter Sestoft's lightweight Moscow ML and MLton, a whole-program optimizing implementation.
ML and its offshoots have inspired, and continue to inspire, the majority of the academic research on (statically) typed functional programming languages.