Currying 為 functional programing 中重要的技巧,本篇為簡介,日後會更進一步討論本文提到的專有名詞以及相關細節。
將多參數函數,轉化一次僅接受單一參數的函數
每一次 call function 傳入部分的參數,回傳一個 SPECIALIZED function 去處理剩下的參數。
Currying 是將一個函式
f: X + Y + Z => Result
轉換成
f': X => (Y => Z => Result)
我們調用 f' 與第一個參數 X 。其結果是一個函式,直到傳入所有的參數得到結果。
在 currying 之前這樣調用
f(X, Y, Z)
在 currying 之後這樣調用
f'(X)(Y)(Z)
範例3 SPECIALIZED function
透過簡單的傳遞參數,就能夠動態的建立實用的新 function,本篇是 currying 範例是來自 Kyle Simpson getify/Functional-Light-JS ,這也是我看過最易理解的 curry 實作,與各位分享。