useful for anyone wanting to learn about the basic features ML
This book aims to teach the basic ideas behind ML, which is a functional language available in a number of implementations; the main modern freeware versions are Standard ML of New Jersey (SML/NJ) and Objective CAML (OCAML). SML/NJ supports the 1996/7 standard for ML known as SML, while OCAML is a major dialect of the ML family.
For those programmers who are not aware of the functional paradigm, this type of program makes very little use of variables and instead uses functions and their arguments to determine the values to be returned and displayed. These languages are also strongly typed; functions accept parameters of specified types and return specified types.
The book discusses in detail a number of major topics, such as data types (the datatype keyword) and unsurprisingly, functions (the fun keyword) using questions and answers. This style is very unusual in a technical book: at first this approach didn't quite work for me - I normally prefer computing books to be more descriptive. However, the approach is aimed at those who know little or nothing about ML, so this book could well provide the basics that are needed by someone who is not familiar with programming concepts, or hidebound by previous experience using 3GLs.
As I initially found the book rather hard to read I put it aside for a couple of weeks and then started reading it again from the middle and found it easier to follow. Some of the examples shown there are similar to those used in a course, 'Mathematics and Computing' about the mathematical basis of logic and logic programming, that I studied some years ago. The parallel made the book easier to follow from that point; I think that I fell into the 3GL trap when I read it for the first time.
The examples quoted in the text could all be input to one of the ML interpreters mentioned at the beginning of the review to reassure the reader that they work. Hints are provided to accommodate the differing SML/NJ and OCAML syntax.
I think that this book would be useful for anyone wanting to learn about the basic features ML, or another functional language that supports a similar syntax. I also think that C, C or Java programmers who want to implement programs using a functional style would find this of interest.
My reservations are; a) the style may not suit everyone and b) some of the ACCU membership will probably not be interested in finding out about ML or functional programming. On the other hand if you are interested in widening your knowledge as a programmer, then I believe the lessons learned here will improve the programs that you write, because they give you an additional way of looking at programming problems and solutions.
Recommended with reservations.