ML (programming language)

From Wikipedia, the free encyclopedia
(Redirected from ML programming language)
Jump to navigation Jump to search

Template:Short description Script error: No such module "other uses". Script error: No such module "Unsubst". Script error: No such module "Infobox".Template:Template otherScript error: No such module "Check for unknown parameters". 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.Script error: No such module "Unsubst". 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.Script error: No such module "Unsubst". 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.Script error: No such module "Unsubst".

Overview

Script error: No such module "Unsubst". ML started development by Robin Milner and others upon his arrival at University of Edinburgh in 1973, its syntax inspired by ISWIM. Historically, ML was conceived to develop proof tactics in the LCF theorem prover (whose language, pplambda, a combination of the first-order predicate calculus and the simply typed polymorphic lambda calculus, had ML as its metalanguage). The design of the first version of ML was finalized, and subsequently documented in the 1979 book Edinburgh LCF by Gordon, Milner, and Wadsworth.[2][3]

Today there are several languages in the ML family; the three most prominent are Standard ML (SML), OCaml and F#. Ideas from the ML language family have influenced numerous other languages, like Haskell, Cyclone, Nemerle,[4] ATS, and Elm.[5]

Features of SML include a call-by-value evaluation strategy, first-class functions, automatic memory management through garbage collection, parametric polymorphism, static typing, type inference, algebraic data types, pattern matching, exception handling, and the use of static scoping rules.[6]

SML can be referred to as an impure functional language, because although it encourages functional programming, it does allow side-effects[7] (like languages such as Lisp, but unlike a purely functional language such as Haskell). Like most programming languages, SML uses eager evaluation, meaning that all subexpressions are always evaluated, though lazy evaluation can be achieved through the use of closures. Thus, infinite streams can be created and used as in Haskell, but their expression is indirect. SML's strengths are mostly applied in language design and manipulation (compilers, analyzers, theorem provers), but it is a general-purpose language also used in bioinformatics and financial systems.Script error: No such module "Unsubst".

See also

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "Citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

Further reading

<templatestyles src="Refbegin/styles.css" />

External links

Template:ML programming Script error: No such module "Navbox". Template:Authority control