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.
- Standard ML of New Jersey from Bell Labs. A freely available, high-quality native-code compiler for the full SML'97 language. MLJ is implemented using SML/NJ.
-
Moscow ML by Sergei Romanenko and Peter Sestoft. A freely
available, small,
efficient bytecode interpreter for the SML'97 core language
with a restricted module system.
-
MLWorks from Harlequin. A commercial native-code compiler
for SML'97 with an integrated graphical development environment.
-
POLY/ML from Abstract Hardware. A commercial native-code
compiler for the SML'90 language.
-
Poplog Standard ML from Integrated Solutions. A commercial
multi-language programming environment which supports SML'90
together with Common LISP, Pop 11 and Prolog.
There is also a thriving community which uses the French
Caml dialect of ML.
-
Objective Caml from INRIA. A fast native-code and bytecode compiler for
a version of Caml with object-oriented features and a novel
module system.
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.
Newsgroups
Two newsgroups are of interest: