Saber2pr's Blog

偏函数与柯理化

偏函数

利用了 Function.prototype.bind

使一个函数拥有预设的初始参数。

const add = (a: number, b: number, c: number) => a + b + c

const add2 = add.bind(add, 1)
// 得到 add2 = (b: number, c: number) => 1 + b + c

console.log(add2(2, 3))

柯理化

递归进行以上步骤就得到柯理化。

const curry = fn => arg => (fn.length === 1 ? fn(arg) : curry(fn.bind(fn, arg)))

console.log(curry(add)(1)(2)(3))