DEV Community

Discussion on: Currying in JavaScript

Collapse
 
pentacular profile image
pentacular

It's a way to make function interfaces uniform, so that a function becomes a transform from one input value to one output value.

Collapse
 
jwp profile image
John Peters

Code example please?

Thread Thread
 
pentacular profile image
pentacular
const add = a => b => a + b;
const eq = a => b => a === b;

eq(5)(add(2)(3));
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
jwp profile image
John Peters

Just wondering how is that better than this?

const add(a,b)=>a+b;
add(2,3);

The decomposition of earlier example reveals a simpler understanding until one understands compositional parameter injection.

Thread Thread
 
pentacular profile image
pentacular

It's better if you want to use functions which have a uniform interface of transforming a single input value to a single output value.

Consider using map like so

[1, 2, 3].map(add(3))

Using the binary form of add you would need to introduce an ad hoc function to rectify the interface

[1, 2, 3.map(v => add(3, v))

The one to one mapping style generally makes composition simpler.

So, the question is, do you want to do that kind of stuff?