Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Elements of ML programming (ML97 ed.)
Ullman J., Prentice-Hall, Inc., Upper Saddle River, NJ, 1998. Type: Book (9780137903870)
Date Reviewed: Aug 1 1998

While object-oriented programming and imperative languages such as Fortran and Cobol are largely favored by industrial software houses, the functional programming paradigm still lures some believers. Many languages that emphasize a functional approach to programming have been designed, from the LISP of early years to the recent Haskell. ML is among the few of these that has had significant success and has drawn together a significant community. Ullman gives a hands-on introduction to this interesting language.

The book’s structure is straightforward. It strictly follows the syntax of the ML language and gradually builds upon concepts, going from basic expressions and types to functions, input/output operations, user-defined types, and modules. The book concludes with a brief summary of ML syntax and an index. The presentation is clearly practical. Each chapter is structured along the same lines: a sequence of small examples that help clarify a notion is followed by “case studies,” which are larger, self-contained, and often thought-provoking examples, such as the Karatsuba-Ofman algorithm for polynomial multiplication, binary search trees, or feedback shift registers for random number generation. All of the programs in the book have been run using the Standard ML of New Jersey (SML/NJ) implementation of ML.

Even though some typos remain, this is an excellent book. Ullman performs his usual pedagogical magic, and the pace is about right for the average programmer. Still, the emphasis is clearly on practice: the goal is to transform the reader into a savvy ML programmer. Do not expect to find deep theoretical considerations on issues such as type inference, abstract data types, or memory management. (The first mention of “garbage collection” is on page 343, which is surprising given the clear advantage this memory management technique provides to programmers.) Still, enough is said to make the concepts as understandable as possible, which can be quite a challenge when one has to deal with the intricacies of the SML type system, such as generalizable type variables and modules.

Nonetheless, I was a bit disappointed that most examples, even though perfectly correct, do not use all the power of functional languages. I kept thinking of how some functions could be rewritten more concisely using higher-order functions such as “map,” “reduce,” and function composition. These higher-order functions are introduced in the book but are not put to their full use. On the other hand, the programmers most attuned to classical (imperative or object-oriented) languages, who the author says are the audience for this book, may have an easier time with such a low-key presentation than with a more abstract one based on higher-order functions.

Even though the main motivation for this new edition is the recent cleanup of ML (named ML97), the author has spent some time improving the book’s structure (for  example,  reducing the original 26 chapters to 9) and significantly expanding the set of examples and case studies. The solutions to the numerous exercises have been removed from the main text and can be accessed via the Web. Even readers of the first edition [1] will be inspired by this new version.

I recommend this book to any programmer who wants a down-to-earth presentation of ML97, one of the most successful functional languages.

Reviewer:  P. Jouvelot Review #: CR121689 (9808-0574)
1) Ullman, J. Elements of ML programming. Prentice-Hall, Upper Saddle River, NJ, 1994.
Bookmark and Share
 
Ml (D.3.2 ... )
 
 
Introductory And Survey (A.1 )
 
Would you recommend this review?
yes
no
Other reviews under "Ml": Date
Commentary on standard ML
Milner R. (ed), Tofte M. (ed), MIT Press, Cambridge, MA, 1991. Type: Book (9780262631372)
Jun 1 1992
ML primer
Stansifer R., Prentice-Hall, Inc., Upper Saddle River, NJ, 1992. Type: Book (9780135617212)
Sep 1 1993
The ML approach to the readable all-purpose language
Spooner C. ACM Transactions on Programming Languages and Systems 8(2): 215-243, 1986. Type: Article
Dec 1 1986
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy