Real World Haskell
Bryan O'Sullival, John Goerzen & Don Stewart
O'Reilly Media, 2008
Rating: 5/5 (excellent)
When Real World Haskell arrived in my studio, I knew almost nothing about this language, except for the fact that Haskell could have helped me to become a better programmer, even when continuing to code in another language (Perl, in my specific case). This book not only succeeded in this task, but made me realize that I really like Haskell (unlike Lisp, to say it all: all those parentheses have irritated me from the very first time I saw the language). The appealing syntax and the powerful language features make Haskell a charming language, which also happens to be very useful in the real world with an increasing user base and a variety of libraries available.
This is a solid book of nearly 700 pages, which guides the reader into the language from the basics. The authors know that the mind shift for programmers coming from imperative languages can be hard, and they therefore help the reader by providing comparisons with other languages, especially C, C++ and Java; these are not just a couple of words, but full blown examples with source code.
Haskell features are unveiled a few at a time, while looking at real world examples. Chapters either gather together one or more topics (fex. monads, concurrent programming, ...) or walk through the construction of specific programs (fex. barcode recognition, JSON parsing, ...). Regardless of the contents of each chapter, explanation revolves around code. Any given language feature is explained in words and sentences, but it's the huge amount of code samples - often commented line by line - which makes the reader understand the concepts.
Speaking of concepts, these tend to occur several times throughout the book: they are often briefly described a second time (which is quite useful) when they happen to be used again, and a pointer to the page with the full explanation (which can also be located later in the book as opposed to previously) is provided.
The authors put also a lot of effort on beauty, non-redundancy and efficiency. Code can pass through several stages: it is first shown you in the most obvious form, and is then optimized in many clever (and very "Haskellish") ways. This is a very interesting part of it all: it's where one learns how to write beautiful code.
All in all, Real World Haskell is an outstanding book: it makes for an excellent introduction to Haskell and works very well as a tutorial on how to write good software. Five stars, absolutely.