Open In App

Underscore.js _.curry() Method

The Underscore.js _.curry() method returns a curried version of the given function. If the reverse is true, arguments will be processed from right to left.

Syntax:



_.curry( fun, reverse )

Parameters: This method takes two parameters as listed above and discussed below.

Return Value: It returns a curried version of the function.



Note: To execute the below examples, you have to install the underscore-contrib library by using this command prompt and execute the following command.

npm install underscore-contrib

Example 1: 




// Defining underscore contrib variable
var _ = require('underscore-contrib'); 
  
// Function
function fun(a, b, c, d){
    return a + b + c + d;
}
  
// Making curried function
var gfgFunc = _.curry(fun);
  
// Only operates for arguments same
// as the number in function
console.log("Addition is :",
        gfgFunc(2)(23)(2)(3));
  
// Not adds for less arguments
console.log(gfgFunc(1)(2));

Output:

Addition is : 30
[Function: mustBeUnary]

Example 2:




// Defining underscore contrib variable
var _ = require('underscore-contrib'); 
  
// Function
function fun(a, b, c) {
    return a * b * c;
}
  
// Making curried function
var gfgFunc = _.curry(fun);
  
// Only operates for arguments same
// as the number in function
console.log("Multiplication is :",
        gfgFunc(2)(23)(2));
  
// Not multiplies for less arguments
console.log(gfgFunc(1)(2));

Output: 

Multiplication is : 92
[Function: mustBeUnary]

Example 3: Arguments are processed right to left for reversed = true.




// Defining underscore contrib variable
var _ = require('underscore-contrib'); 
  
// Function
function fun(a, b, c){
    return arguments;
}
  
// Making curried function
var gfgFunc = _.curry(fun,true);
  
// Only operates for arguments same
// as the number in function
console.log("curried arguments are :",
    gfgFunc("arg1")("arg2")("arg3"));

Output: Arguments are stored in reverse order.

curried arguments are : [Arguments] 
    { '0': 'arg3', '1': 'arg2', '2': 'arg1' }

Example 4: Arguments are processed left to right for reversed = false.




// Defining underscore contrib variable
var _ = require('underscore-contrib'); 
  
// Function
function fun(a, b, c){
    return arguments;
}
  
// Making curried function
var gfgFunc = _.curry(fun,false);
  
// Only operates for arguments same
// as the number in function
console.log("curried arguments are :",
    gfgFunc("arg1")("arg2")("arg3"));

Output: 

curried arguments are : [Arguments] 
    { '0': 'arg1', '1': 'arg2', '2': 'arg3' }

Article Tags :