ML (programming language)
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
- Standard ML and Template:Section link
- Dependent ML: a dependently typed extension of ML
- ATS: a further development of dependent ML
- Lazy ML: an experimental lazily evaluated ML dialect from the early 1980s
- PAL: an educational language related to ML
- OCaml: an ML dialect used to implement Rocq (former name: Coq) and various software
- F#: an open-source cross-platform functional-first language for the .NET framework
References
<templatestyles src="Reflist/styles.css" />
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
Script error: No such module "Check for unknown parameters".
Further reading
<templatestyles src="Refbegin/styles.css" />
- The Definition of Standard ML, Robin Milner, Mads Tofte, Robert Harper, MIT Press 1990; (revised edition adds author David MacQueen), MIT Press 1997, Template:ISBN The Definition of Standard ML (Revised).
- Commentary on Standard ML, Robin Milner, Mads Tofte, MIT Press 1997, Template:ISBN.
- ML for the Working Programmer, Lawrence Paulson, Cambridge University Press 1991, 1996, Template:ISBN.
- Script error: No such module "citation/CS1".
- Elements of ML Programming, Jeffrey D. Ullman, Prentice-Hall 1994, 1998, Template:ISBN.
External links
- Standard ML of New Jersey, another popular implementation
- F#, an ML implementation using the Microsoft .NET framework Template:Webarchive
- MLton, a whole-program optimizing Standard ML compiler
- CakeML, a read-eval-print loop version of ML with formally verified runtime and translation to assembler
Template:ML programming Script error: No such module "Navbox". Template:Authority control