Currying Functions
Currying is taking a function with multiple arguments and breaking it down into one or more additional functions that take just one argument and eventually resolve to a value. The initial function call does not take all the arguments but returns a function whose input is the remaining arguments and whose output is the intended result for all the arguments.
That was a mouthful, so let's look at an example. Say you have a simple sum
function:
function sum(a, b) { return a + b; }
Let's express this as a curried function in arrow notation:
const sum = a => b => a + b;
Notice that we have two levels of functions here, and each function takes one parameter. The first function takes one parameter, a
, and returns another function, which takes the second parameter, b
.
Note
If you are having trouble seeing the two function levels, here's an equivalent that may help:
function sum(a) {
...