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