Paperback: 250 pages
Publisher: Pragmatic Bookshelf; 1 edition (November 2, 2013)
Product Dimensions: 7.5 x 0.5 x 9.2 inches
Shipping Weight: 1.1 pounds (View shipping rates and policies)
Average Customer Review: 3.7 out of 5 stars See all reviews (9 customer reviews)
Best Sellers Rank: #1,145,120 in Books (See Top 100 in Books) #93 in Books > Computers & Technology > Programming > Functional #250 in Books > Textbooks > Computer Science > Algorithms #388 in Books > Textbooks > Computer Science > Object-Oriented Software Design
This is not functional programming book. This book is written for developers that be used to object-oriented programming and interested in functional programming. The first half is rewriting object-oriented design pattern by functional idioms but it's not functional style programming. The last half is about functional programming techniques(i.e. tail recursion, lazy sequence). If you want to learn functional style programming, I couldn't recommend it. You should read another great books like "Scala for the impatient", "Functional programming in scala", "The Joy of Clojure" and so on.
I like the approach of this book in that it uses a simple web server as its primary example. I find this very meaningful for my work, as much of my work has a networking component. I also like how it starts off with an imperative piece of code that is very similar to the way I, as an imperative programmer of many years, might have done it myself. The authors then take the problem apart from a functional perspective.I think it is very important to avoid leading readers using only examples which are easily handled with a functional approach. This book achieves this with challenging material. I was surprised that I could not simply read the book and gain a rapid understanding, but had to go and really do the exercises with the author. I am told by a number of experts that this is typical for imperative-minded programmers. But I really want to learn functional programming, so I'm glad I purchased this book!
Can't believe I paid almost $20 for this. The explanations are repetitive and written in a very boring prose. The code examples are hugely oversimplified, and are neither practical nor interesting. Anyone with a half-decent understanding of these patterns could have thought them up, and most could probably do better. The Scala code is often not idiomatic (e.g. using Vectors instead of lists, constructed without the :: constructor). I can't speak for the Clojure, I'm not as familiar with the language.For one of the more interesting patterns, Memoization, after showing a completely naÃ¯ve Scala implementation that ignores generics doesn't even try to demonstrate how to correctly use the type system, and instead just hard-codes the specific types being used in the example, I was really curious about what the Clojure code would look like. Instead, he just says there's a standard function to do it. I'm glad it was mentioned, but I would expect a $20 book would at least compare implementations.I've read blogs that are more in-depth, better-written, and have more useful code examples than this drivel. Don't buy.
If you are a complete newbie in FP you might get "something" out of this book. However, the book has many errors and the highlight of that is the cake pattern. At the end he finishes that discussion with "However, this will get us another compiler error...", without clarifying what the next step is. I believe this book approaches the functional programming in a wrong (and simplistic) way.
I found this book really helpful. Especially when trying to understand more about the many ways I could use functional programming to solve many day-to-day problems. Functional patterns really make OO patterns look trivial and code-wasting. This book actually shows you the code, and makes you get why declarative and functional is the way to go.You won't regret it, it's worth much more than I payed for.