Java Reference
In-Depth Information
We can see that a new function is returned that keeps the value of
x
that was provided to
the
multiplier()
function:
quadrupler(5);
<< 20
Because the first call to a curried function returns another function, we can invoke the
whole function by passing each argument in separate pairs of parentheses:
multiplier(8)(11);
<< 88
This works because
multiplier(8)
returns a function, and we're immediately passing
the argument
11
to that function.
Curring allows you to turn a single function into a series of functions instead. This is useful
if you find that you're constantly calling a function with the same argument. For example,
if you were frequently using the same value in the
multiplier()
function to calculate
a tax rate of 22%:
tax = multiplier(0.22,400); // calculate tax on 400
<< 88
If you found yourself doing this often, it would make sense to create a new curried function
using
0.22
as the first argument:
calcTax = multiplier(0.22);
<< function (z){
return x * z;
}
calcTax(400);
<< 88
By currying the
multiplier()
function, we've created a new function,
calcTax()
,
that is simpler to use.
