Written by a well-known computer science education and researcher. No previous knowledge of ML or functional programming is assumed. This is the first book that offers BOTH a highly accessible, step-by-step introductory tutorial on ML programming and a complete reference to, and explanation of, advanced features. The author uses a wide variety of digestible program examples to bring the reader along at a reasonable pace. More sophisticated programs and advanced concept topics balance out a book that is usable in a number of courses and settings for either self-study or class discussion.
I wish I learned Standard ML later. I also wish there was a newer edition of this book.
It's not a bad book to learn Standard ML from. You could understand most of it without having to run smlnj, and for the most part, it was a pleasant read. However:
* It's an old book and it's typeset pretty horribly. I guess it's OK for 1997, but it's annoying to read it it 22 years later. * It tries a bit too hard to bridge in C/C++ developers, instead of just jumping in the functional waters head first. * Occasionally there are some really lengthy explanations for some really obvious code that just get in the way. * It ends up with a definition of the syntax of ML that's just a bit awkward to read. You may infer the language from it if you think hardly enough, but examples would have been better.
Apart from all that, it's a pretty decent book. One thing that I particularly enjoyed was the exercises – occasionally there was something cool to learn in them, like 2-3 trees.
Clear and concise coverage of SML, including descriptions of complex topics which were largely graspable with minimal prior exposure. The diagrams in the final chapter visually describing the language design itself were particularly useful.
I started off wondering why the heck should I be learning a language that ls little used outside of the academic when I learned that I had to study this for one of my 2nd year courses.
Then I fell in love with ML. It's a beautiful little language. The book is written in a fun yet clear style. It's a great introduction to functional programming, especially for those from a procedural programming background. Study this book for the concepts that it presents and explains, not just for the language.
If you are already acquainted with basic functional programming concepts, you won't find anything new here. If you are looking for a good book with which to dive into FP, Learn You a Haskell (free online) teaches the same concepts (and more) in a readable and lively style. If you want to learn ML specifically, it's a decent read, albeit slow and dry at points.
Clear and unassuming. Lots of code examples with line-by-line explanations that were a big help in trickier areas like type inference and the module system. So I concur with Fogus: great intro to ML.