Misplaced Pages

Standard ML: Difference between revisions

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
Browse history interactively← Previous editNext edit →Content deleted Content addedVisualWikitext
Revision as of 14:23, 14 June 2005 edit137.205.192.27 (talk)No edit summary← Previous edit Revision as of 19:20, 16 June 2005 edit undoBrighterorange (talk | contribs)Administrators13,261 edits big cleanup. added several other implementations. moved f# out to see also since it is not an implementation of Standard MLNext edit →
Line 1: Line 1:
The '''SML''' programming language is a modern descendant of the ] programming language used in the ] theorem-proving project. It is unique among widely used languages in that it has a formal specification, given as an ] in ''The Definition of Standard ML''. The '''SML''' programming language is a modern descendant of the ] programming language used in the ] theorem-proving project. It is unique among widely used languages in that it has a formal specification, given as a typing rules and an ] in ''The Definition of Standard ML''.

SML is popular among compiler writers and programming language researchers, as well as in the development of ].

<!-- to-do: give a sense of what SML is like, using some short code examples -->


==Implementations== ==Implementations==
Line 6: Line 10:


* ] is a whole-program optimizing compiler that produces extremely fast code compared to other ML implementations. * ] is a whole-program optimizing compiler that produces extremely fast code compared to other ML implementations.

* ] (abbreviated SML/NJ) is a full compiler, with associated libraries, tools, an interactive shell, and documentation.


* ] is a light-weight implementation, based on the ] runtime engine. It implements the full SML language, including SML Modules, and much of the SML Basis Library. * ] is a light-weight implementation, based on the ] runtime engine. It implements the full SML language, including SML Modules, and much of the SML Basis Library.
Line 11: Line 17:
* Poly/ML is a full implementation of Standard ML. * Poly/ML is a full implementation of Standard ML.


* TILT is a full fledged certifying compiler for SML. It uses typed intermediate languages to optimize code and ensure correctness, and can compile to ].
* ] (abbreviated SML/NJ) is a full compiler, with associated libraries, tools, an interactive shell, and documentation.

* Hamlet is an SML interpreter that aims for portability and correctness.

* The ML Kit is meant as a starting point for language extensions and tinkering. Its implementation is based very closely on the Definition.


* SML.net allows compilation to the Microsoft ] and has extensions for linking with other ] code.
* SML2c is a batch compiler and compiles only module-level declarations (i.e. signatures, structures and functors) into ]. Based on SML/NJ version 0.67 and shares front end and most of its run-time system, but does not support SML/NJ style debugging and profiling. Module-level programs that run on SML/NJ can be compiled by sml2c without any changes.


* SML2c is a batch compiler and compiles only module-level declarations (i.e. signatures, structures and functors) into ]. It is based on SML/NJ version 0.67 and shares the front end and most of its run-time system, but does not support SML/NJ style debugging and profiling. Module-level programs that run on SML/NJ can be compiled by sml2c without any changes.
* ] Is an ML implementation based partly on ]


All of the implementations above are ] and freely available. There are no commercial SML implementations. All of the implementations above are ] and freely available. Most are implemented themselves in SML. There are no longer any commercial SML implementations; although ] once produced a commercial IDE and compiler for SML called ], it and the company are now defunct.


==See also== ==See also==
Line 24: Line 34:
* ] * ]
* ] * ]
* ]


==References== ==References==

Revision as of 19:20, 16 June 2005

The SML programming language is a modern descendant of the ML programming language used in the LCF theorem-proving project. It is unique among widely used languages in that it has a formal specification, given as a typing rules and an operational semantics in The Definition of Standard ML.

SML is popular among compiler writers and programming language researchers, as well as in the development of theorem provers.


Implementations

Some SML implementations include:

  • MLton is a whole-program optimizing compiler that produces extremely fast code compared to other ML implementations.
  • Standard ML of New Jersey (abbreviated SML/NJ) is a full compiler, with associated libraries, tools, an interactive shell, and documentation.
  • Moscow ML is a light-weight implementation, based on the CAML Light runtime engine. It implements the full SML language, including SML Modules, and much of the SML Basis Library.
  • Poly/ML is a full implementation of Standard ML.
  • TILT is a full fledged certifying compiler for SML. It uses typed intermediate languages to optimize code and ensure correctness, and can compile to typed assembly language.
  • Hamlet is an SML interpreter that aims for portability and correctness.
  • The ML Kit is meant as a starting point for language extensions and tinkering. Its implementation is based very closely on the Definition.
  • SML.net allows compilation to the Microsoft CLR and has extensions for linking with other .Net code.
  • SML2c is a batch compiler and compiles only module-level declarations (i.e. signatures, structures and functors) into C. It is based on SML/NJ version 0.67 and shares the front end and most of its run-time system, but does not support SML/NJ style debugging and profiling. Module-level programs that run on SML/NJ can be compiled by sml2c without any changes.

All of the implementations above are open-source and freely available. Most are implemented themselves in SML. There are no longer any commercial SML implementations; although Harlequin Inc. once produced a commercial IDE and compiler for SML called ML Works, it and the company are now defunct.

See also

References

  • R. Milner, M. Tofte, R. Harper and D. MacQueen. The Definition of Standard ML (Revised). ISBN 0262631814.
Categories: