实现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