Reading material

Two excellent textbooks to help anyone learning Standard ML are Paulson's ``ML for the Working Programmer (Second Edition)'' [Pau96] and Ullman's ``Elements of ML Programming (ML '97 edition)'' [Ull97]. These textbooks use the 1997 revision of the Standard ML language---sometimes called SML '97. Other textbooks refer to the 1990 issue of the language standard, and some even pre-date that. Another on-line tutorial on SML '97 is Harper's ``Programming in Standard ML'' which is available from his Web page.

Good books which refer to the 1990 revision of the language are Sokolowski's ``Applicative High-Order Programming'' [Sok91] and Reade's ``Elements of Functional Programming'' [Rea89].

Tofte's ``Four lectures on Standard ML'' [Tof89] concentrates primarily on modules. A careful account of the static semantics of modules is given which makes clear the crucial notions of sharing and signature matching.

Textbooks suitable for someone with no programming experience are Bosworth's ``A practical course in programming using Standard ML'', Michaelson's ``Elementary Standard ML'', Wikström's ``Functional programming using Standard ML'' and ``Programming with Standard ML'' by Myers, Clack and Poon. All of these contain exercises and specimen solutions. Wikström's book is quite dated and some of the code fragments which appear in the book will no longer be accepted by Standard ML because of revisions to the language.

The definitive definition of the Standard ML programming language is given in ``The Definition of Standard ML (Revised 1997)'' by Milner, Tofte, Harper and MacQueen. This is not a reference manual for the language: rather it is a formal definition giving rules which define the simple constructs of the language in terms of familiar mathematical objects and define the complex constructs of the language in terms of the simpler ones. The definition is complemented by Milner and Tofte's ``Commentary on Standard ML'' which relates the definition to the user's view of the language.