15 of 22 people found the following review helpful
2.0 out of 5 stars
The wrong way to teach (programming), 4 Jan. 2009
I really wanted to like this book. The title alone seems so appealing. Instead of the usual, often dry, approach to teaching functional programming by means of mostly mathematical examples, this book takes a completely different approach by using realistic problems. At the same time the book seems targeted at people new to both Haskell and functional programming in general. Sadly, after reading this book I no longer think this is a viable approach to teaching.
Subjects are introduced as a "side-effect" (no pun intended) of developing fairly complex realistic programs. The authors seem eager to prove that Haskell can indeed be used for this. Unfortunately, this means they lose track of the teaching aspect. Not only do you have to learn difficult programming subjects (such as monads), you also have to understand the individual problems in the book.
This makes the book more confusing than necessary. Many chapters in the book refer back to earlier (large!) examples. Even if you read the book from start to end, it becomes a problem having to remember and understand each of these problems. But the worst effect is that it becomes nearly impossible to use the book as a reference.
One positive point about the book. Unlike most (all?) other books on Haskell it focuses on GHC with all of its extensions instead of restricting itself to the academic Haskell-98 standard. Thank you for that!
EDIT: After having read some parts of the book a second (and third!) time, I have a few more good points to add. Some of the sections on monads are quite well-written actually. I also like that the authors pay attention to good, general programming practices such as "encapsulation". This is essential when writing scalable and realistic programs - no matter what language you use.
I still stand by my initial review. But I feel I was a little to harsh in the rating. So I'd like to give it one more star... but it doesn't seem like Amazon will let me do that. :/