Hacker News new | past | comments | ask | show | jobs | submit login

Using currying by itself is fine and easy to understand. But if you write a function that returns a function that returns a function — that's not easy.

For example, compare these two functions:

function (a, b) { return a + b; }

function create_adder(a) { return function(b) { return a + b;}}

The purpose of first function is easier to understand. And if you rewrite last function according to modern trends, it can become even less readable:

const create_adder = (a) => (b) => a + b;




No-one would actually do this in real code though - this pattern is typically used for partial application.


How is (a) => (b) => a+b less readable than (a,b) => a+b?


Because the first is a function returning function, and you have to think how that works, and the second one is just a simple function that returns a sum.

Also, if you start a function with a word 'const' then it is less obvious that this is a function and not just a constant. In contrast, if you use a word 'function', then you understand what it is from the first word.


That's only because you're not used to currying.

A function is “just” a constant.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: