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
The new SML/NJ version 110 implements SML '97.
Harlequin ML Works
A commercial implementation featuring a graphical development environment.
Moscow ML
A lightweight implementation that does not support the SML module system

| SML/NJ Home Page |

Send your comments to
Copyright © 1998, Lucent Technologies; Bell Laboratories.
Click to toggle
does not end with </html> tag
does not end with </body> tag
The output has ended thus: ="">Lucent Technologies; Bell Laboratories</A>. <BR> </FONT> </BODY> </HTML>