Programming in Standard ML

Robert Harper

School of Computer Science

Carnegie Mellon University

Fall, 2000

Copyright 1997, 1998, 1999, 2000.

All Rights Reserved.


This version of the notes is obsolete! The current version is available here.

These notes are intended as a brief introduction to Standard ML (1997 dialect) for the experienced programmer.  They began as lecture notes for 15-212: Fundamental Principles of Computer Science II, the second semester of the introductory sequence in the undergraduate computer science curriculum at Carnegie Mellon University.   They have subsequently been used in several other courses at Carnegie Mellon, and at a number of universities around the world.  These notes are intended to supersede my Introduction to Standard ML, which has been widely circulated over the last ten years.

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 defines a common basis of types that are shared by all implementations of Standard ML.

There are several implementations of Standard ML available for a variety of hardware and software platforms.  Standard ML of New Jersey is a comprehensive implementation, and is the most widely used.  There are two other implementations, MLKit and Moscow MLConcurrent ML is an extension of Standard ML with primitives for concurrent programming; it is available as part of the Standard ML of New Jersey compiler.  (For users at Carnegie Mellon, see the CMU local guide for information about using Standard ML.)

[ Table of Contents ]