Practical introduction to Functional Programming with JS

AndreaZanin
95.8K views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Currying

Currying is the technique of translating the evaluation of a function that takes multiple arguments into evaluating a sequence of functions, each with a single argument.

This becomes very easy using lambda functions and closures. Let's dive straight into code:

Get the even numbers in an array

So why is this useful? Because we are now able to pass the arguments at different points in time; this means that we can use currying to "construct" a function.

E.g.

Generic filter callback to check any property of an object

And now, time to get your hands dirty: remember the applyCoupon function we wrote in the previous chapter? It was very specific; now we want to create a curryable function that takes as arguments (in this order) category, discount between 0 and 1 (a 2$ item with a 0.1 discount will cost 1.8$) and an item, and that returns the item with the correct price.
E.g.

const item = {
           "name": "Biscuits",
           "type": "regular",
           "category": "food",
           "price": 2.0
         }
         
applyCoupon("food")(0.1)(item).price === 1.8

Remember to apply the discount only to the right items!

Implement `applyCoupon` as a curriable function
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content