on June 28, 2004
As an experienced programmer new to Haskell I found this book both enlightening and frustrating. The author does a superb job of teaching you how to think like a functional programmer, his stated goal, but occasionally leaps over too many steps for a beginner to follow his implementations. The book is however quite readable and works well in conjunction with the various on-line tutorials on Haskell syntax. I'd recommend the book for anyone looking to get into serious functional programming.
on July 1, 2000
This text is nicely produced and has some interesting examples of Haskell programming. However, the book is mainly examples of Haskell and functional programming rather than explanations of Haskell and FP. The exposition is spotty and assumes a lot. It would best be considered a second book for those learning Haskell.
C, Java, Pascal, Ada, and so on, are all imperative languages. They are "imperative" in the sense that they consist of a sequence of commands, which are executed strictly one after the other. Haskell is a functional language. A functional program is a single expression, which is executed by evaluating the expression. Anyone who has used a spreadsheet has experience of functional programming. In a spreadsheet, one specifies the value of each cell in terms of the values of other cells. The focus is on what is to be computed, not how it should be computed.
This book is a unique attempt to teach the reader the Haskell programming language by demonstrating how to write programs that perform interesting tasks such as animation, graphics, robot control, and functional music composition. The book succeeds at introducing the reader to the Haskell language and the idea of functional programming, and the book is a fascinating read with unique projects performed in the Haskell language. This is particularly true if you are interested in multimedia programming. However, intermediate features of the language are brushed over. If you are already familiar with Haskell, this book will teach you interesting ways to look at functional programming and give you some ideas for some interesting projects. If you are new to Haskell, you are going to find yourself somewhat confused when you get to the more advanced material. I therefore recommend that you read this book along with "Haskell:The Craft of Functional Programming" by Thompson. That book is not nearly as interesting as this book, but it fills in all of the intermediate details that are missing in a very detailed manner.
on April 2, 2000
This book takes a nice approach to teaching functional programming. Paul Hudak uses fun examples, with applications to multimedia. Early on you are using the graphics library to make shapes in windows, and by the end there is Haskore, a cool way to compose music. However, these examples are not JUST fun, they also serve as nice examples of how to think about and construct functional programs, in domains where functional programs really excel. If you ever thought about learning what this stuff was about, this book is the right choice!
on June 14, 2005
This book is well thought out and well written, but makes a poor introduction to Haskell. The first few chapters are great as the author spends a lot of time laying the foundation of functional programming and Haskell. However, the author skips the intermediate level items and goes straight to the more difficult aspects without enough explanation. I simply could not follow many of the later examples. Furthermore, some of the chapters did not introduce any new concepts and instead were there only to complete the examples - something I found frustrating as that space could have been used to better describe some of the concepts. All in all this could be a good book for more advanced Haskellers looking for real world examples, but I would shy away from it.
on March 1, 2006
in general, and if you don't know Haskell, OCaML, ML, or F#, then you really should buy this book and work through it.
A generation ago, Abelson and Sussman wrote "Structure and Interpretation of Computer Programs," which brought world-shaping clarity to programming in the form of a generic, functional approach. In the time since then, "types" and "lazy evaluation" have fundamentally improved that overall approach, and Haskell is the rightful successor to Scheme as the best-of-breed of functional programming languages. That said, types and lazy evaluation are somewhat tricky to learn, and this book offers a fun and easy way to do it.
The software needed to run the samples in the book is free and works on Windows platforms (and possibly some others).
Buy it, work through every word of it, you won't regret it :)
on January 15, 2003
I already knew Haskell when I started reading this book, but it held my interest right through to the end. This is largely due to Hudak's choice of interesting application domains (graphics, animation, robotics, music) and how neatly applications in these domains can be expressed in Haskell. (As an advanced reader, I was particularly interested in the treatment of the design and implementation of his functional animation language.) More than just that, though, the book's success derives from a very nice blending of theory and practice. I especially liked his use of calculational reasoning as a approachable form of program proof. I highly recommend this book if you want to learn functional programming--tastefully--and have fun while doing it.
on February 15, 2013
We used this book for a portion of a programming languages course I am currently taking. The book is a classic example of an emerging 21st-century computer science teaching paradigm: "Let's keep the kids interested in programming by making pretty pictures and sounds! Let's show them how much *fun* and how *cool* programming can really be!"
It's repulsive on pretty much every level.
Using the included SOE multimedia library kept me and my classmates from getting at the fundamentals of Haskell. Rather than experimenting by writing useful or interesting programs, my classmates and I struggled with wondering why on earth someone wrote in such a huge difference between a "Region," a "Picture," and "Graphic," and scratching our heads over where the system clock was getting pumped into our programs for the Behavior applicative. The "pretty pictures" paradigm, as I so call it, left us with a thousand times more questions than answers.
I have no idea how this book could ever be useful for a complete and total programming beginner. Someone without any programming experience shouldn't be handed a library that will mold their their still-impressionable mind on how computer programs are written - they should work on rudimentary examples that build strong fundamentals in thought process. Learn to use a hammer, a screwdriver, and a wrench before you bust open a workshop full of power tools, the same way you should learn to make tinker-toy programs from scratch before trusting in and glueing together libraries and API's.
My time with this book would have been a thousand times better spent trying to write simpler text-based programs with ghci and the #haskell IRC channel open, worrying about *how* Haskell *works* rather than worrying about "Can I make a really trashy-looking model of a solar system that even my niece would despise, using the most hideous graphics library I can rummage up from any corner of the web?"
I'm greatly enjoying the new Haskell assignment we are working on as of this review: writing a parser and interpreter for a language using the Parsec package. Real-world examples for useful tasks has never been so refreshing.
I highly recommend you check out [...] Learn You a Haskell For Great Good, freely available on the web for your learning pleasure. I've had great success with it. I'll also say that I find the pretty pictures paradigm to be equally harmful to people learning OOP languages - steer clear of ObjectDraw [...] if someone tells you it's a good starting point for Java.
on December 27, 2008
I have to agree with a variety of reviewers who describe this book as an excellent read but not a good place to learn Haskell. What this book will do is give the reader an excellent understanding of functional programming, but descriptions of nitty gritty language details are lacking. I feel that were it not the case that I already hold some familiarity with standard ML (a language that looks and feels very similar to Haskell) I would be completely lost for lack of rigorous discourse on pattern matching, type inference and higher order functions. The author seems to assume that the reader holds specific prior knowledge on a variety of topics which I think would be cumbersome to a reader without prior functional programming exposure (specifically languages loosely describable as "in the ML family").
All that being said, I do find the book a delightful read. So long as a potential reader use this as supplemental material rather than foundational material the text worth a look. Indeed the criticism that I and others have leveled assumes a specific intent on the part of the author that may not be what the author had in mind. This book is an excellent high level look at how one versed in imperative or object oriented programming can shift their thinking into solving problems with functional mechanisms.
I personally see the need for learning functional programming as a response to more and more languages incorporating functional paradigms into their tool set, particularly the high level scripting languages that have jumped in popularity of late. Even the STL and auxiliary libraries of C++ have an interesting emphasis on higher order functions and the composition thereof that makes a foundation in functional programming worth looking into. This book is an excellent place to look into how functional programming is applied, but I recommend looking elsewhere for details specific to the Haskell programming language.
on October 6, 2014
The content of this book is great. I enjoy being able to perform some useful functionality in Haskell versus most other functional programming books. What I mean is that the examples are cohesive and arguable useful. This is better than a book full of recipes.
That being said, the quality of the book construction itself is terrible. I know this is a paperback; I shouldn't expect too much. The paper is fairly dark, as standard for recycled paper. However, the ink is very faded. Sometimes letters or whole words are not fully inked and you have to guess what symbol was there. The little "Detail" boxes which aim to highlight asides are especially hard to read since the background is a medium gray, the washed-out text barely contrasts, and to make matters worse: these elements seem pixelated and blurred.
Overall: I wish I just bought the eBook version and printed it out myself. It would be better than this copy which seems to have been printed out of a 30 year old Xerox machine with a toner cartridge composed of pencil shavings. I'm never buying a physical copy of a Cambrige Press book again.
The cover is cool and trippy though