ML is a family of
impure,
call-by-value,
statically typed,
polymorphic,
higher-order,
functional programming languages 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.