|
|
|
|
|
by q-rews
1729 days ago
|
|
Currying makes it implicit, but it's the same thing. const one = curriedSum(1)
one(2)
is the same as const one = sum.bind(null, 1)
one(2)
with the exception that the latter is explicit and not as slow as `curriedSum`.Both `sum` and `curriedSum` can be used the same way: curriedSum(1)(2)
sum.bind(null, 1)(2)
or just: curriedSum(1, 2)
sum(1, 2)
One of the advantages is that non-curried functions make the return value explicit. You can't implement `sum(...addends)` with currying because curried functions have a fixed number of parameters. Once past that, a call will not return a function anymore. sum.bind(null, 1).bind(null, 2).bind(null, 3).bind(null, 4) // Still not called
curriedSum(1)(2)(3)(4) // Maybe it works, maybe undefined is not a function
|
|
Gotta say currying seems to be useless in real world. No advantage whatsoever over partial application.