In simplest term, what is currying and why should this approach be favored over traditional programming paradigm?

98 views Asked by At

I am having hard time understanding currying through several sources on web . Isn't there more intuitive example of currying?

Also, what are its advantages over traditional programming paradigm ? Is currying possible to achieve on non-functional programmming?

1

There are 1 answers

3
Gregor Raýman On BEST ANSWER

Imagine a function with multiple parameters add(a,b) = a + b. This function adds two numbers. Now imagine, in some context you need a function that takes just one parameter and you'd like to have a function that adds 5. That function could look like this: adds5(x) = 5 + x.

Now, in some contexts you'd need a function that adds 5, in other contexts one that adds 10. So instead of writing various functions that do the same just with other constant, you can write a function that does return a function that adds a constant that is a parameter to the first function: adder(a) = (b) = a + b.

The function add and adder look very similar. add takes 2 parameters and adds them, the adder returns a function that adds the parameter of adder to its own parameter.

The transformation of add to adder is called currying.

Since this is so much related to functions, I'd say that when there is currying, then it is functional programming. You can do functional programming in any programming language - after all, all Turing complete languages are equivalent ;-) , but in functional languages that support functions as first class citizens, it is much easier.