Standard ML '97

Standard ML was proposed in 1983, designed from '84-'88, and defined in Definition of Standard ML (Milner, Tofte, Harper, MIT Press, 1990).

Standard ML '97 is a modest revision (and simplification) of the language, defined in The Definition of Standard ML (Revised) (Milner, Tofte, Harper, MacQueen, MIT Press, 1997).

The name of the revised language remains "Standard ML", but we also refer to it as "Standard ML '97" or "SML '97" to distinguish it from the 1990 version, which can be referred to as "SML '90".

At the same time, the new SML Basis Library is added to the specification of the language. The new basis library is intended to support a wide range of systems and applications programming: it specifies a broad collection of predefined modules that provide basic types, input/output facilities, and interfaces for interacting with the host operating system in a portable way.

The highlights of the language changes in SML '97 are given below. For much more detail on the changes, and suggestions on how to convert SML '90 code to run under SML '97, see the SML '97 Conversion Guide.

The principal language changes in SML '97 are:


A SML '97 Conversion Guide covers the issues of converting programs from SML/NJ 0.93 to SML '97 (SML/NJ 110). A useful conversion aid is the Top Level Environment Comparison, which summarizes the differences between the top level environments of SML/NJ 0.93 (which is assumed by some older textbooks) and the new SML '97 (SML/NJ 110) top level. Full documentation for the Basis Library is available online.

Text Books

The following new editions of ML programming textbooks describe SML '97.


Standard ML of New Jersey
SML/NJ versions 110 and later implement SML '97 plus some extra features (vector expressions and patterns, OR patterns, withtype in signatures, higher-order modules).
Moscow ML
An implementation based on code from Caml Special Light. The module system provides some extra features (higher-order modules, first-class structures, recursive modules).
ML Kit
The ML Kit implements SML '97 and uses region analysis for memory management. The module system is implemented using a scheme called "static interpretation".
A whole program compiler for SML '97.
Versions 4 and later implement SML '97.

| SML/NJ Home Page |

Send your comments to
Copyright © 1998, Lucent Technologies; Bell Laboratories.