Standard ML

Standard ML is a safe, modular, strict, functional, polymorphic programming language with compile-time type checking and type inference, garbage collection, exception handling, immutable data types and updatable references, abstract data types, and parametric modules. It has efficient implementations and a formal definition with a proof of soundness.

ML is used in teaching, research and industry around the world in applications ranging from compilers and theorem provers to web browsers, toolkits for distributed computation and low-level system programming.

There are now plenty of books, guides, manuals and lecture notes describing the Standard ML language. Here are some pointers to get you started:

Paulson's book is particularly recommended.

Other Implementations of ML

The following are the other main implementations of Standard ML, though there are also a number of research implementations. The web pages for these projects are also all valuable sources of other ML-related links.

There is also a thriving community which uses the French Caml dialect of ML.

The Definition

The formal semantics of the language is defined in but be warned that it's not a particularly light read! The definition specifies formally not just the grammar of SML, but also the meaning of the language. SML is the only "realistic" language which has been specified so precisely.

The original Definition was published in 1990. The revised Definition, published in 1997, makes a number of changes which simplify some aspects of the language and increase the expressiveness of others. Roughly concurrently with the changes to the language itself, a new Standard Basis Library was defined. This is a collection of ML structures which implement the types and functions necessary for common day-to-day programming tasks. The new language is often referred to as SML'97.


Two newsgroups are of interest:

MLj home Comments to: