Top critical review
Manning really dropped the ball on this one
Reviewed in the United States on July 29, 2017
In no particular order:
- The code in the book is full of errors: typos, missing symbols, unhandled nulls, and so on. The author mixes syntaxes seemingly by accident (function vs. arrow, let vs. const vs. var, etc.).
- Concepts are introduced and then mixed willy nilly: lenses are neither derived nor explained, Lodash and Ramda functions are mixed at will leading to totally unreadable code, imperative and functional and OO code is used interchangeably, and so on.
- The code is littered with incomplete and unexplained references to and code from other languages (Java, SQL, Haskell, Scala, F#, etc.), which adds nothing to the author's explanations, and seems to tell the reader "Hey look! I Googled how to write a function in Haskell! That's what functional programming is right? Right?".
- The author begins by talking about why Object Oriented code is bad, and then proceeds to use Lodash chains and ES6 classes throughout the book without explanation.
- Recursion is barely explained, and the author does not mention that V8 has yet to implement tail call optimization, making most recursive algorithms useless in practice (he does mention trampolining in a side bar, but fails to discuss it at all); He talks about referential transparency, then proceeds to throw runtime exceptions throughout his examples; Monads are barely derived or discussed: the author seems to have simply copy+pasted Functor, Maybe, and Either from a FantasyLand implementation, added a few annotations, and called it done.
Overall, this book was a real bummer. Manning should retract it, fix it, and re-release it. As is, it is not fit for publication.