柯里化(currying)和部分應用程式
柯里化
柯里化是將一個函式
f: X * Y -> R
轉換成
f': X -> (Y -> R)
而不是帶有兩個參數的 f'
,我們調用 f'
與第一個參數。其結果是一個函式,我們可以呼叫第二個參數來產生結果。
因此,未使用柯里化的函式 f
像這樣調用:
f(3, 5)
如果使用柯里化後的函式 f'
像這樣調用:
f(3)(5)
例如:
尚未柯里化的函式 add()
function add(x, y) {
return x + y;
}
add(3, 5); // returns 8
柯里化後的函式 add()
function addC(x) {
return function (y) {
return x + y;
}
}
addC(3)(5); // returns 8
柯里化的規則
柯里化將一個二元函式轉換成一個一元函式,這個一元函式再回傳一個一元函式。
柯里化:(X × Y → R) → (X → (Y → R))
JavaScript 程式碼:
function curry(f) {
return function(x) {
return function(y) {
return f(x, y);
}
}
}
部分應用程式
部分應用程式將一個函式的
f:X * Y -> R
第一個參數固定來產生新的函式
f’:Y -> R
f'
和 f
不同,只需要填寫第二個參數,這也是為什麼 f'
比 f
少一個參數的原因。
例如:綁定函式的第一個參數來產生函式 plus5
。
function plus5(y) {
return 5 + y;
}
plus5(3); // returns 8
部分應用程式的規則
部分應用程式將二元函式和數值產生一個一元函式。
部分應用程式: ((X × Y → R) × X) → (Y → R)
Javascript 程式碼:
function partApply(f, x) {
return function(y) {
return f(x, y);
}
}
Use the 100 answers in this short book to boost your confidence and skills to ace the interviews at your favorite companies like Twitter, Google and Netflix.
GET THE BOOK NOWA short book with 100 answers designed to boost your knowledge and help you ace the technical interview within a few days.
GET THE BOOK NOW