Great book. I'd also recommend his free video course on Egghead. It's rather quirky, which is something that I very much enjoyed: <a href="https://egghead.io/courses/professor-frisby-introduces-composable-functional-javascript" rel="nofollow">https://egghead.io/courses/professor-frisby-introduces-compo...</a>
Dr. Booleans guide is excellent. Another nice intro to functional programming using JavaScript is Kyle Simpsons functional lite:<a href="https://github.com/getify/Functional-Light-JS/blob/master/README.md" rel="nofollow">https://github.com/getify/Functional-Light-JS/blob/master/RE...</a><p>Kyle wrote the You Don't Know JS series. This book is just as good.
Good read. He annotates his function with Hindley-Milner type signatures (specified in comments). I really prefer this to, say, jsdoc. Anyone know if there's a jsdoc-like tool that understands these comments? That'd be pretty swank.
The Fantasy Land spec and related libraries like Sanctuary and Fluture deserve a mention here, even if only as a next step after reading this guide.<p>It helps bridge the gap between looking at all of this from the more math/Haskell perspective and how it's implemented in javascript, without sacrificing definitions (as much as possible).
Really enjoyed this book. Once you get currying, and using curried functions to pipe/compose, everything clicks into place. I found the examples of using Nothing/Maybe monads for error handling pretty neat as well - is that a common pattern, because I don't remember native support for those types when I briefly dabbled in elixir.<p>Also is his explanation of monads as 'functors that can flatten' a simplification for the purposes of teaching, or is that more or less what they are?
For my fellow italians, I wrote a free "Introduction to functional programming" PDF, check out <a href="https://github.com/gcanti/functional-programming" rel="nofollow">https://github.com/gcanti/functional-programming</a>
Great book for an intro to FP if you’re a JS developer. I have a talk about it a few years ago aimed at complete newcomers to FP: <a href="http://blog.tomduncalf.com/posts/functional-programming-fundamentals-talk/" rel="nofollow">http://blog.tomduncalf.com/posts/functional-programming-fund...</a>
This is excellent. But man, I don't think I can ever go back to not feeling like there's a huge pedagogical gap between the local maxima the functional programming explanations engineers are typically exposed to, and the much higher (though probably still not a global maxima) point that pure mathematicians have been adapted into. I just wish we'd embrace the geometric (topological, differential geometrical) threads that a lot of these concepts (like lifts etc) are connected to, instead of being arbitrarily tied to a pedagogy textured by the sociological context that coding originated from (i.e. heavily influenced by logicians etc).
Robert Harper's 'Programming in Standard ML' free pdf off his CMU page is the best intro I've found to really understand FP, goes into details and reasons, like the pattern matching material. Very concisely written and SML is like Scheme, easy to learn syntax perfect for teaching.
When I started looking into Functional Programming, Professor Frisby's book was instrumental in my learning the concepts and applying them to a language I already know & code in.
Great book, really enjoyed. For people who wanna learn more about Functional Programming (Haskell,Purescript) from 101 to building product, I recommend this resources:<p>FP Resources:<a href="https://github.com/functionalflow/brains/projects/9" rel="nofollow">https://github.com/functionalflow/brains/projects/9</a>
Why does he factor out the zero valued flock of birds variable?<p>That seems extremely dishonest. The reason why we name variables, is so that they can hold different values. There is no guarantee that every run of the script will have the same initial variables. If it was, you might as well just type in the result.
I wish I knew enough compsci to know why functional programming is useful. I read about half the book, and while interesting from a learning perspective I don't know where I can apply it.<p>Context: self-taught programmer in the data science/statistical modeling world.
Since the FP crowd is here, why is loading a program into memory, writing a register, or calling a function not seen as a side effect, but writing to disk is seen as a side effect? Or have I got it wrong?
Actually the course on Egghead is terrible. The voice that is used to comment on the video is very badly recorded and I have no idea why they chose that voice for a serious video for adults.<p>Edit: Also fine to not have my opinion on this, but a lot of people shared my opinion, check the Egghead comment section. I would've loved to watch that video, with a more professional voice and walkthrough.
> <i>We have all the features we need to mimic a language like Scala or Haskell with the help of a tiny library or two.</i><p>Seems misleading at best, as you mimic only some parts of functional programming. For example, for-loops are not used but neither are recursion and tail calls mentioned.<p>> <i>[T]yped functional languages will, without a doubt, be the best place to code in the style presented by this book. JavaScript will be our means of learning a paradigm, where you apply it is up to you.</i><p>Surprising how they teach the typed functional programming paradigm in a language which does not support you in it. Going from JavaScript to Haskell, wouldn't PureScript be a better stepping stone than this? Consider tail call elimination or all the support that type checking gives you to get the type nestings right, especially when you are a beginner and may have issues even with String being [Char] (unlike JavaScript) let alone Monads etc.<p><i>(EDIT: In case you didn't check the contents of the book: Yes, this is a book that teaches Monads, type classes, pointfree style, Hindley-Milner(!) etc., not a form of FP that would be natural in JS.)</i>