関数型言語

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> 

となる。

メモ

[edit]

関連

[edit]

参考

[edit]