Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
ML (programming language)
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
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>
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
ML (programming language)
(section)
Add topic