浏览代码

added curry function

mightyplow 8 年之前
父节点
当前提交
bca5f5aab4
共有 1 个文件被更改,包括 15 次插入1 次删除
  1. 15 1
      lib/function.js

+ 15 - 1
lib/function.js

@@ -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
 }