If you want to learn about Standard ML of New Jersey, the implementation of Standard ML cooked up by Appel and MacQueen at Bell Labs, but do not feel like digging into the somewhat daunting official description of the language [1], then this book is for you.
After a short introduction, including some historical comments and a small bibliographic reference list, the book is structured into three main parts: “Introduction to Programming in ML,” “Advanced Features of ML,” and “Additional Details and Features.” In a total of 26 chapters, the book covers all aspects of the language. Every chapter uses the same structure: first a new notion is informally introduced; then a series of examples, mixing SML/NJ printouts with English explanations, shows how it can be used in practice; and finally exercises are suggested and some solutions are provided. The book ends with a summary of SML/NJ syntax, which can be used as a detailed index since it includes a lot of pointers to the previous chapters, and an index of terms. Most of the programs are available by anonymous ftp.
This book is more a primer for Standard ML of New Jersey than a well-thought-out presentation of the concepts underlying the ML language family. One will not find deep explanations of how unification works in type reconstruction or why side effects endanger type safety. The book is more reminiscent of a language manual than of a book on programming principles. As such, it is a very good book. It does not assume prior knowledge of functional programming, and uses an easygoing pace to introduce notions and concepts. The pedagogy and workmanship (with numerous cross-references, illuminating examples, and good descriptions) of the book are outstanding, as is customary in Ullman’s books. I do not hesitate to recommend it to teachers who want to introduce Standard ML as a programming language to undergraduates.