实现javascript柯里化(currying)以及composition

140 阅读1分钟

实现javascript柯里化(currying):

function curry(fn) {
  return function curried(...args) {
    if (args.length < fn.length) {
      return curried.bind(null, ...args)
    }
    return fn.apply(null, args)
  }
}

实现javascript composition:

const compose = (...fns) => (...args) => fns.reduceRight((res, fn) => [fn.call(null, ...res)], args)[0];

source: https://mostly-adequate.gitbooks.io/mostly-adequate-guide/appendix_a.html#curry