1234567891011121314151617181920212223242526 |
- 'use strict';
- const toArray = require('./array').toArray;
- const argsToArray = fn => () => fn(toArray(arguments));
- const curry = fn => {
- return function curried () {
- const that = this,
- args = Array.prototype.slice.call(arguments);
- if (args.length < fn.length) {
- return curried.bind.apply(curried, [that].concat(args));
- } else {
- return fn.apply(that, args);
- }
- };
- };
- const combine = argsToArray(fns => fns.reverse().reduce((fnc, fn) => val => fnc(fn(val))));
- module.exports = {
- argsToArray,
- combine,
- curry
- };
|