ML logo

The Standard ML Language

Standard ML is a popular functional programming language designed by researchers in the LFCS in the 1980's. In 1987, Robin Milner and the LFCS won the BCS Award for Technical Excellence for work on Standard ML.

Originally ML was conceived as a Meta Language for the theorem-proving system Edinburgh LCF, but it evolved into a successful general-purpose programming language. The language was standardised in 1990, and revised in 1997 as Standard ML '97.

Standard ML is one of a very few programming languages with a fully formal definition, giving it significant appeal for both research purposes, and industrial-strength applications. One of the most appealing aspects of the language is that it is safe: all errors that could de-rail an ML program are detected at compile-time or handled neatly at run-time. This property makes program development and debugging much easier than in other unsafe languages (e.g. C++).

Standard ML Documents

Here are some useful documents which help with learning Standard ML. Beware that some of these documents only cover the older 1990 definition of Standard ML.

For those who wish to progress beyond these guides, the following book is certainly worth purchasing:

A large frequently-asked-questions (FAQ) document for the comp.lang.ml newsgroup is also available via FTP.

Standard ML Compilers

The Standard ML Language is designed to be compiled. Those who wish to experiment with the ML language will be pleased to know that a number of excellent ML compilers are available freely on the Internet, complete with source code:

Programmers who have has some experience with Standard ML and would like a more complete development environment may want to consider the ML-Works compiler by Harlequin Ltd. The compiler includes a large number of useful facilities (e.g. an interface to the Motif and Windows systems, a debugger, etc).

Other Resources

Hopefully the above compilers and documents should be more than enough to get started with ML programming. For those who would like to know more about the Standard ML language from a formal perspective, or who would like to implement their own ML compiler, the complete language definition can be obtained:

A detailed description of the implementation of the SML-NJ compiler is described in the book:

For other internet links, you can check Yahoo's ML area.

You might also want to examine an alternative version of the ML language, CAML. It has a different syntax but broadly similar features to Standard ML.

Logo supplied by Chris Walton.