This article needs additional citations for verification. (May 2015) |
Paradigm | Multi-paradigm: functional, generic, imperative |
---|---|
Designed by | Robin Milner, others at the University of Edinburgh |
First appeared | 1973 |
Typing discipline | Inferred, static, strong |
Dialects | |
OCaml, Standard ML, F# | |
Influenced by | |
ISWIM | |
Influenced | |
Clojure, Coq, Cyclone, C++, Elm, F#, F*, Haskell, Idris, Kotlin, Miranda, Nemerle, OCaml, Opa, Erlang, Rust, Scala, Standard ML |
ML (Meta Language) is a general-purpose, high-level, functional programming language. It is known for its use of the polymorphic Hindley–Milner type system, which automatically assigns the data types of most expressions without requiring explicit type annotations (type inference), and ensures type safety; there is a formal proof that a well-typed ML program does not cause runtime type errors.[1] ML provides pattern matching for function arguments, garbage collection, imperative programming, call-by-value and currying. While a general-purpose programming language, ML is used heavily in programming language research and is one of the few languages to be completely specified and verified using formal semantics. Its types and pattern matching make it well-suited and commonly used to operate on other formal languages, such as in compiler writing, automated theorem proving, and formal verification.