'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 };