柯里化与函数合成

柯里化

柯里化(currying)指的是将一个多参数的函数拆分成一系列函数,每个拆分后的函数都只接受一个参数(unary)。

柯里化前:

//柯里化前
function add (a, b) {
  return a + b;
}

add(1, 1) // 2

改写成柯里化函数形式:

function add (a) {
  return function (b) {
    return a + b;
  }
}
// 或者采用箭头函数写法
const add = x => y => x + y;

const f = add(1);
f(2) // 3

即,拆分成了两个函数,每个函数接受一个参数。
代码中,函数 add 只接受一个参数 a,返回一个函数 f 。函数 f 也只接受一个参数 b

函数合成

const compose = f => g => x => f(g(x));

const f = compose (x => x * 4) (x => x + 3);
f(2) // 20

代码中,compose 就是一个函数合成器,用于将两个函数合成一个函数。

柯里化与函数合成有着密切的联系。前者用于将一个函数拆成多个函数,后者用于将多个函数合并成一个函数。

参考连接

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。