|
@@ -8,7 +8,21 @@ const argsToArray = fn => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+const curry = fn => {
|
|
|
+ return function curried () {
|
|
|
+ const that = this,
|
|
|
+ args = Array.prototype.slice.call(arguments)
|
|
|
+
|
|
|
+ if (args.length < fn.length) {
|
|
|
+ return curried.bind.apply(partial, [that].concat(args))
|
|
|
+ } else {
|
|
|
+ return fn.apply(that, args)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
module.exports = {
|
|
|
argsAsArray: argsToArray,
|
|
|
- combine: argsToArray(fns => fns.reverse().reduce((fnc, fn) => val => fnc(fn(val))))
|
|
|
+ combine: argsToArray(fns => fns.reverse().reduce((fnc, fn) => val => fnc(fn(val)))),
|
|
|
+ curry: curry
|
|
|
}
|