The functional programming works based on the concept of data immutability and on mathematics expressions where each pure function has a particular return that can be used as param by another pure function. For more on that please check my other post:
An analysis about Functional Programming
“As developers, we gravitate toward frameworks that help us create extensible and
clean application architectures. Yet the complexity of our codebase still gets out of
control, and we’re challenged to re-examine the basic design principles of our code.”
I start my review with this citation coming from Luis, it synthesizes why functional programming is so important. I can’t help to think this book has surprised me and surpassed my initial expectations. It happens due to the fact I thought it’d be quite a challenge to share and exemplify the functional programming on a JS universe the way he did.
He’s constantly pointing issues between the functional programming concepts and how the JavaScript is meant to work. But as soon as he does that, he goes ahead and provides us with a perfect workaround suiting every single scenario. For example, he indicates the use of the Object.freeze method to stop the mutability nature of JavaScript and the Ramda lib, which is an outstanding addition to your project in terms of using pure functions and data manipulation.
The book relies on several examples, going from really straightforward ones to others in which you’ll have to carefully prepare the environment installing some third-party libs. I’d strongly recommend you to follow each example in order to be able to fully understand and fix the concepts behind that specific excerpt of code.
Another aspect worthy of mention is how he dissects both imperative and functional programming, tracing, most of the times, a parallel between each and every aspect of those two different paradigms. It makes the book really uncomplicated to understand.
One thing that disappointed me was the book length x detail level comparison. For instance, I believe he could achieve the same overall result with dozens of pages less. That would have made the book lighter, more concise thus providing its readers a faster and smoother experience.
It’s ultimately a functional programming book, but it requires a certain level of JavaScript proficiency from its readers, especially because of the practical approach he opts to use to explain the concepts.
I’d say someone partially aware of how to apply the functional programming concepts in other languages such as F#, could have a hard time trying to figure this one out. In other hand, it’s a perfect fit for those who have an advanced JavaScript knowledge and want to give functional programming a try.