Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
ML (programming language)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Overview== Features of ML include a call-by-value [[evaluation strategy]], [[first-class function]]s, automatic memory management through garbage collection, [[parametric polymorphism]], [[Type system#Static typing|static typing]], [[type inference]], [[algebraic data types]], [[pattern matching]], and [[exception handling]]. ML uses [[Scope (computer science)#Lexical scoping|static scoping]] rules.<ref>{{cite book |last1=Milner |first1=Robin |last2=Tofte |first2=Mads |title=Commentary on Standard ML |date=1991 |publisher=The MIT Press |isbn=0-262-63137-7 |pages=35β36|chapter=4.1 Contexts, environments and scope}}</ref> ML can be referred to as an ''impure'' functional language, because although it encourages functional programming, it does allow [[side-effect (computer science)|side-effects]]<ref>{{cite book |last1=Sebesta |first1=Robert |title=Concepts of Programming Languages |date=1999 |publisher=Addison-Westley |isbn=0-201-38596-1 |page=54 |edition=4th}}</ref> (like languages such as [[Lisp (programming language)|Lisp]], but unlike a [[purely functional language]] such as [[Haskell]]). Like most programming languages, ML uses [[eager evaluation]], meaning that all subexpressions are always evaluated, though [[lazy evaluation]] can be achieved through the use of [[Closure (computer science)|closures]]. Thus, infinite streams can be created and used as in Haskell, but their expression is indirect. ML'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. ML was developed by [[Robin Milner]] and others in the early 1970s at the [[University of Edinburgh]],<ref name="Gordon1996">{{cite web |last=Gordon |first=Michael J. C. |author-link=Michael J. C. Gordon |year=1996 |title=From LCF to HOL: a short history |url=http://www.cl.cam.ac.uk/~mjcg/papers/HolHistory.html |access-date=2007-10-11}}</ref> and its syntax is inspired by [[ISWIM]]. Historically, ML was conceived to develop proof tactics in the [[Logic for Computable Functions|LCF theorem prover]] (whose language, ''pplambda'', a combination of the [[First-order logic|first-order predicate calculus]] and the simply typed [[Polymorphism (computer science)|polymorphic]] [[lambda calculus]], had ML as its metalanguage). Today there are several languages in the ML family; the three most prominent are [[Standard ML]] (SML), [[OCaml]] and [[F Sharp (programming language)|F#]]. Ideas from ML have influenced numerous other languages, like [[Haskell]], [[Cyclone (programming language)|Cyclone]], [[Nemerle]],<ref>{{Citation |title=Programming language for "special forces" of developers |publisher=Nemerle Project Team |publication-place=Russian Software Development Network |url=http://nemerle.org/About |access-date=January 24, 2021}}</ref> [[ATS (programming language)|ATS]], and [[Elm (programming language)|Elm]].<ref>{{cite book|last1=Tate|first1=Bruce A.|last2=Daoud|first2=Fred|last3=Dees|first3=Ian|last4=Moffitt|first4=Jack|title=Seven More Languages in Seven Weeks|date=2014|publisher=The Pragmatic Programmers, LLC|isbn=978-1-941222-15-7|pages=97, 101|edition=Book version: P1.0-November 2014|chapter=3. Elm|quote=On page 101, Elm creator Evan Czaplicki says: 'I tend to say "Elm is an ML-family language" to get at the shared heritage of all these languages.' ["these languages" is referring to Haskell, OCaml, SML, and F#.]}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)