Standard ML of New Jersey

From Wikipedia, the free encyclopedia
  (Redirected from SML/NJ)
Jump to: navigation, search
Standard ML of New Jersey
Paradigm multi-paradigm: functional, imperative
Stable release
110.80 / August 19, 2016; 7 months ago (2016-08-19)[1]
Typing discipline strong, static, inferred
License BSD-like license[2]
Influenced by
Standard ML

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.


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.

Successor ML Features[edit]

with the 110.80 release, the evolution of SML/NJ is geared towards evolving the Standard ML Basis library and supporting Successor ML features.

In the current release, the Successor ML features can be enabled using the command-line option -Cparser.succ-ml=true

The Successor ML documents have been extracted from the SML/NJ '97 tex files and made available as a github repository of tex documents which the community is expected to collaborate and grow the language.

In addition, HaMLet has a complete implementation of Successor ML features. The practical knowledge so gained, is being incorporated in SML/NJ as it evolves through its releases.

See also[edit]

External links[edit]