These notes are intended as a brief introduction to Standard ML (1997 dialect) for the experienced programmer. They are intended as supplementary reading, rather than as a self-standing textbook. For a self-contained treatment of the use of Standard ML, see Lawrence Paulson, ML for the Working Programmer (Second Edition), MIT Press, 1997, or Jeffrey Ullman, Elements of ML Programming, Prentice-Hall, 1994.
The Definition of Standard ML (Revised) by Robin Milner, Mads Tofte, Robert Harper, and David MacQueen (MIT Press, 1997) constitutes the official definition of the language. It is supplemented by the Standard ML Basis Library, which provides a collection of commonly-used routines.
There are several implementations of Standard ML available on a variety of platforms. Standard ML of New Jersey is the most widely used. Harlequin's MLWorks is a commercial implementation that provides a substantial set of program development and analysis tools. Other implementations include Moscow ML, Poly ML, and MLKit. A local guide is available for users of Standard ML at Carnegie Mellon University.
Concurrent ML is a non-standard extension of Standard ML with primitives for concurrent programming. It is available as part of the Standard ML of New Jersey compiler. The MLWorks system also includes primitives for concurrent programming.
These notes are a work in progress. I plan to make regular updates, so please check back for changes. The most recent revision was made on Tuesday, November 11, 1997 11:05 AM. Corrections, comments and suggestions are welcome.