02-函数式编程:柯里化和组合

113 阅读1分钟

柯里化:是把一个多参数函数转化成一个嵌套的一元函数的过程;

实现

const curry = function (fn) {
        return function curryFn(...args) {
            if (args.length < fn.length) {
                return function () {
                    return curryFn(...args, ...arguments);
                }
            } else {
                return fn(...args);
            }
        }
    }
  • 柯里化意义

    • 让纯函数更”纯“,每次接受一个参数,松散解耦

    • 某些语言及特定环境下只能接受一个参数

    • 惰性执行

组合函数:无需创建新的函数,通过基础函数解决眼前问题。 多函数组合:从后往前依次执行。

   const compose = (...fns)=>val=>fns.reverse().reduce((acc,fn)=>fn(acc),val);