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 15:31, 29 June 2005 editZarvok (talk | contribs)364 editsm References: made bob harper a link, will fill in page← Previous edit Revision as of 09:53, 9 August 2005 edit undoYurikBot (talk | contribs)278,165 editsm robot Adding: daNext edit →
Line 40: Line 40:
* ], ], ] and D. MacQueen. ''The Definition of Standard ML (Revised)''. ISBN 0262631814. * ], ], ] and D. MacQueen. ''The Definition of Standard ML (Revised)''. ISBN 0262631814.


]
]
]
]

]
] ]
] ]
Line 45: Line 51:
] ]
] ]

]
]
]
]

Revision as of 09:53, 9 August 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 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 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

Categories: