:curry: Chickencurry
![Coverage Status](https://coveralls.io/repos/stoeffel/chickencurry/badge.svg?branch=master)
Add some chickencurry to your functions
Library to curry a function.
It supports auto rurrying, currying a number of arguments, placeholders and partial applications.
Installation
npm install chickencurry
Usage
Basic usage
var curry = require('chickencurry');
function add(a, b) {
return a + b;
}
var add1 = curry(add)(1);
add1(3);
add1(4);
curry with function bind syntax ::
(ES2015)
var curry = require('./');
var add1 = function(a, b) {
return a + b;
}::curry(1);
add1(3);
add1(4);
var sub = function(a, b) {
return a - b;
}::curry();
sub(3)(1);
Curry n arguments
var curryN = require('chickencurry/N');
function join() {
return Array.prototype.slice.call(arguments).join(',');
}
curryN(join, 3)(1)(2)(3)
Curry 1,2 or 3 arguments
var curry1 = require('chickencurry/1');
var curry2 = require('chickencurry/2');
var curry3 = require('chickencurry/3');
curry1(join)(1)
curry2(join)(1)(2)
curry3(join)(1)(2)(3)
Partial applications
var curryN = require('chickencurry/N');
function join() {
return Array.prototype.slice.call(arguments).join(',');
}
curryN(join, 3, 'Fish', 'Chicken')('...');
curryN(join, 3)('Fish', 'Chicken')('...');
Placeholder
You can curry a function using placeholders, if you want to set the i.e 3rd argument.
function join(a, b, sep) {
return a + sep + b;
};
var __ = require('chickencurry/__');
var join_ = curry(join, __, __, '_');
join_('chicken', 'curry');
var joinCurry = curry(join);
var joinDash = joinCurry(__, __, '-');
joinDash('chicken', 'curry');