Learn how to think and write code like a functional programmer. With this practical guide, software developers familiar with object-oriented programming will dive into the core concepts of functional programming and learn how to use both functional and OOP features together on large or complex software projects.
Author Jack Widman uses samples from Java, Python, C#, Scala, and JavaScript to help you gain a new perspective and a set of tools for managing the complexity in your problem domain. You'll be able to write code that's simpler, reusable, easier to test and modify, and more consistently correct. This book also shows you how to use patterns from category theory to help bridge the gap between OOP and functional programming.
Learn functional programming fundamentals and explore the way functional programmers approach problemsUnderstand how FP differs from object-oriented and imperative programmingUse a set of practical, applicable design patterns that model reality in a functional wayLearn how to incorporate FP and OOP features into software projectsApply functional design patterns appropriately and use them to write correct, robust, and easily modifiable code
"This book could be a decent introduction to functional programming, but it's unlikely to significantly improve your existing skills. It started off strong, but as it went on, it became more of a Scala tutorial rather than focusing on functional programming concepts."
Very great introductory chapters, but falls flat on medium and advanced topics. I already know that monads exist. What would be great in this text is an example of using them for a practical purpose. Instead there's some dumbed-down category theory. Not horrible, per se, but also not what was promised in the earlier parts of the text.
Like for instance... JavaScript has the github.com/fantasyland/fantasy-land functional programming "library." It's useful for not only doing what you want, but providing an executable description of mental models used in functional programming. I'm not saying the author should have said "hey. here's fantasy-land, knock yourself out." But it's a great example of code that could help explain more complex concepts.
I'm not quite done with this book but already am unimpressed.
I found the discussion of domain/range/codomain really confusing until I learned that the term "whole number" is considered "colloquial" (see e.g. wikipedia for discussion). Why not just call them integers? This is a book about programming after all.
I've already noticed a misspelling in the book as well, which gives the impression that not a lot of effort went into editing it.