Standard ML of New Jersey
From Wikipedia, the free encyclopedia
| Paradigm(s) | multi-paradigm: functional, imperative |
|---|---|
| Stable release | 110.75 (October 1, 2012) |
| Typing discipline | strong, static, inferred |
| Influenced by | Standard ML |
| Influenced | Mythryl |
| License | BSD-like license[1] |
Standard ML of New Jersey (SML/NJ) is a compiler and programming environment for Standard ML. Aside from its runtime system, which is written in C, SML/NJ is written in Standard ML. It was developed jointly by Bell Laboratories and Princeton University.
Its name is a reference both to the state in which Princeton and Bell Labs are located and to Standard Oil of New Jersey, the famous oil monopoly of the early 20th century.
Contents |
Features [edit]
SML/NJ extends the SML'97 Basis Library with several additional top-level structures:
- System info – this module provides information about the runtime system, such as the Operating System kind, type and version and whether or not the machine supports multiprocessing.
- Weak pointers – a weak pointer is one that is not sufficient to keep an object alive. If a heap value is referenced via ordinary pointers then it will remain alive, but if it is only referenced via weak pointers then it will be garbage collected.
- Lazy suspensions – this module implements the suspensions necessary for lazy evaluation (as opposed to eager evaluation).
- Compiler internals – SML/NJ provides access to several of the compiler internals, including methods to instantiate and modify the signal table.
- Unsafe access – these modules provide unsafe access to data structures and runtime-system functions.
- Compiler modules – SML/NJ also includes a structure that provides control of the ML compiler, which contains substructures for execution profiling, control of compiler error-message printing and warnings, and customizable pretty printing.