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.