This is a list of resources I found while studying Functional Programming (FP) with JavaScript (JS). The more I study, the more I find resources that I like and then I'll put them down here... so this will keep growing!
But before we jump into that, it's important to say that you should have a deep understanding JavaScript basics. I thought I knew a lot about JavaScript but the more I study FP, the more I realise I have a partial knowledge of JS. So let's start with that:
If, like me, you started your career with jQuery, chances are that you do need some basic knowledge in JS. For that, I would suggest the following FREE series of books: You Don't Know JS (a.k.a. YDKJS)
- Up & Going
- Scope & Closures
- this & Object Prototypes
- Types & Grammar
- Async & Performance
- ES6 & Beyond
It doesn't mean you can only learn FP after you read them all (well, it kinda does), but it will definitely help you on your path to master it. I can't say I read them all until now, but that doesn't mean you should be as reckless as I am ;-)
- Javascript Allongé - possibly the earliest book about Functional Programming in Javascript. This is an revised edition including ES6 features.
- Functional-Light JavaScript - well, we are talking exactly about Functional Programming in JavaScript ;-)
- Professor Frisby's Mostly Adequate Guide to Functional Programming - I came across this book several times. But after Kyle Sympson (the You Don't Know JS author) said he was a fan of this author, then I couldn't really leave it out of this list. I still need to read it though. But one thing at a time...
It's quite important to master these 3 built-in JavaScript functions when you start learning FP. I wanted to practice them as much as possible, but it's not easy to find good exercises that are specific for each (~~unless they are challenges on some websites that you may use them or not~~~). So, looking for exercieses, I saw a post on reddit the other day:
Looking for exercises to practice .reduce, .each, .filter, .map, .call, .apply
I found out about tech.io by accident. Checked the JavaScript section and found this one:
Practical introduction to Functional Programming with JS
I came across this article How JavaScript’s Reduce method works, when to use it, and some of the cool things it can do and it's great! Great examples/exercises!!! The article is based on the following (paid!) egghead.io
course:
Reduce Data with Javascript Array#reduce
JavaScript Monads Made Simple Douglas Crockford: Monads and Gonads :: YUIConf Evening Keynote (video) -
Efficient Data Transformations Using Transducers
This section will be all about articles that talk about functional programming.