柯里化在函数式编程中的一点理解

ref: 函数式编程指北

只传给函数一部分参数通常也叫做局部调用(partial application),能够大量减少样板文件代码(boilerplate code)

柯里化可以通过”局部调用”,一来可以简化代码。其二,通过这样一个类似“预加载”的操作,在 代码编排(compose) 的时候,将实例方法在没有实例的情况也能编排成管道流。

// 编排函数
const compose = function(f, g) {
  return function(x) {
    return f(g(x));
  };
};
 
// 将 trim 方法柯里化
const trim = function (str) {
    return str.trim();
};
// 将字符串的 toLowerCase 方法柯里化
const toLower = function (str) {
    return str.toLowerCase();
};

// 通过柯里化,这里可以把字符串的两个实例函数合并成一个工作流
const compact = compose(toLower, trim);
// 控制台输出为 'abcd'
console.log(compact('   ABCD'));