Paperback: 250 pages
Publisher: Pragmatic Bookshelf; 1 edition (November 2, 2013)
Language: English
ISBN-10: 1937785475
ISBN-13: 978-1937785475
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.
Functional Programming Patterns in Scala and Clojure: Write Lean Programs for the JVM Learning Scala: Practical Functional Programming for the JVM Programming Scala: Scalability = Functional Programming + Objects Crochet: Easy Crochet Patterns: Crochet Patterns for Beginners (Crochet: Step by Step Crochet, Crochet Patterns, Easy Crochet Patterns, Crochet Patterns for Beginners, and Crochet Projects) Functional Programming in JavaScript: How to improve your JavaScript programs using functional techniques Programming #8:C Programming Success in a Day & Android Programming In a Day! (C Programming, C++programming, C++ programming language, Android , Android Programming, Android Games) Programming #57: C++ Programming Professional Made Easy & Android Programming in a Day (C++ Programming, C++ Language, C++for beginners, C++, Programming ... Programming, Android, C, C Programming) Clojure Cookbook: Recipes for Functional Programming Intermittent Fasting: Everything You Need to Know About Intermittent Fasting For Beginner to Expert - Build Lean Muscle and Change Your Life (Lean Lifestyle, Lean Muscle, Lose Fat) Scala Design Patterns: Patterns for Practical Reuse and Design Programming #45: Python Programming Professional Made Easy & Android Programming In a Day! (Python Programming, Python Language, Python for beginners, ... Programming Languages, Android Programming) C#: Design Patterns: The Easy Way Standard Solutions for Everyday Programming Problems; Great for: Game Programming, System Administration, App Programming, ... & Database Systems (Design Patterns Series) Effective TCP/IP Programming: 44 Tips to Improve Your Network Programs: 44 Tips to Improve Your Network Programs DOS: Programming Success in a Day: Beginners guide to fast, easy and efficient learning of DOS programming (DOS, ADA, Programming, DOS Programming, ADA ... LINUX, RPG, ADA Programming, Android, JAVA) ASP.NET: Programming success in a day: Beginners guide to fast, easy and efficient learning of ASP.NET programming (ASP.NET, ASP.NET Programming, ASP.NET ... ADA, Web Programming, Programming) C#: Programming Success in a Day: Beginners guide to fast, easy and efficient learning of C# programming (C#, C# Programming, C++ Programming, C++, C, C Programming, C# Language, C# Guide, C# Coding) FORTRAN Programming success in a day:Beginners guide to fast, easy and efficient learning of FORTRAN programming (Fortran, Css, C++, C, C programming, ... Programming, MYSQL, SQL Programming) Prolog Programming; Success in a Day: Beginners Guide to Fast, Easy and Efficient Learning of Prolog Programming (Prolog, Prolog Programming, Prolog Logic, ... Programming, Programming Code, Java) Parallel Programming: Success in a Day: Beginners' Guide to Fast, Easy, and Efficient Learning of Parallel Programming (Parallel Programming, Programming, ... C++ Programming, Multiprocessor, MPI) Programming: Computer Programming for Beginners: Learn the Basics of Java, SQL & C++ - 3. Edition (Coding, C Programming, Java Programming, SQL Programming, JavaScript, Python, PHP)