柯里化與函數合成

柯里化

柯里化(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 就是一個函數合成器,用于將兩個函數合成一個函數。

柯里化與函數合成有著密切的聯系。前者用于將一個函數拆成多個函數,后者用于將多個函數合并成一個函數。

參考連接

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容