SML programming language
|
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. [1] (http://www.mlton.org)
- Standard ML of New Jersey (abbreviated SML/NJ) is a full compiler, with associated libraries, tools, an interactive shell, and documentation. [2] (http://www.smlnj.org/)
- 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. [3] (http://www.dina.kvl.dk/~sestoft/mosml.html)
- Poly/ML (http://www.polyml.org/) is a full implementation of Standard ML.
- TILT (http://www-2.cs.cmu.edu/~fox/tilt.html) is a fully fledged certifying compiler for SML. It uses typed intermediate languages to optimize code and ensure correctness, and can compile to typed assembly language.
- HaMLet (http://www.ps.uni-sb.de/hamlet/) is an SML interpreter that aims for portability and correctness.
- The ML Kit (http://www.it-c.dk/research/mlkit/) is meant as a starting point for language extensions and tinkering. Its implementation is based very closely on the Definition.
- SML.NET (http://www.cl.cam.ac.uk/Research/TSG/SMLNET/) 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.
de:Standard Meta Language it:SML hu:SML programozási nyelv pl:SML ru:SML