Currying
複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」に変換すること
具体的には、2つの引数を取って加算する関数があったとして、1つ目の引数を与えると、1引数を取って加算した結果を最初に与えた引数に加えて返す「関数」が返ります。
20世紀の数学者Haskell Curryの名前から。
2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること
function sum(x, y) { return x + y; }
これをカリー化
function curried_sum(x) { return function (y) {return sum(x, y);} }
とすると
js> var x = curried_sum(10) js> x(15) 25 js> curried_sum(10)(15) 25 js> curried_sum(13)(-20) -7 js> var f = sum; var g = curried_sum js> f(123, 999) == g(123)(999) true js>
となる。