The Standard ML Programming Language

Table of Contents

1 Overview of Standard ML (SML)

SML is a procedural computer programming language with extremely strong support for higher-order functions and abstraction. It is often called a “functional” language, and it can be used that way, but SML is an imperative language with mutable storage and side effects.

In syntax and semantics, SML stays fairly close to the λ-calculus. For example, just like in the λ-calculus, each function in SML has exactly 1 argument, so if you want to pass more than one thing you need to pack them all together into a data structure.

SML is called a “strongly typed” language, because each type has a well defined meaning which is enforced by SML's typing rules. Because the meanings of types exclude the possibility of ill-defined behavior, it is said that “a well typed SML program can not go wrong”. Although an SML program can (correctly) exit due to an exception if one is raised and not caught, this behavior will be strictly according to the rules rather than being unpredictable.

An SML implementation will automatically calculate most of the types used by a program, and typically very few types need to be written by a programmer.

You can learn about SML from the following resources.

2 Implementations of SML

3 SML libraries

4 IDE (integrated development environment) support for SML

5 General guidance on writing SML

6 Books and reports on SML

7 SML communication channels

8 Programming patterns in SML that involve advanced use of types

Author: The Skalpel Team

Date: 2012-02-13 12:04:33