Standard ML of New Jersey

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Standard ML of New Jersey
Paradigm multi-paradigm: functional, imperative
Stable release
110.83 / June 1, 2018; 47 days ago (2018-06-01)[1]
Typing discipline strong, static, inferred
License BSD-like license[2]
Influenced by
Standard ML

Standard ML of New Jersey (SML/NJ; Standard Meta-Language of New Jersey) is a compiler and programming environment for the Standard ML programming language . 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 American state of New Jersey 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.81 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]