最終更新:2016-10-03 (月) 06:29:23 (2755d)
カリー化
Top / カリー化
Currying
メモ
- 複数の引数をとる関数を、引数を一つずつとる関数に変換すること
- 2引数以上の関数を、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>
となる。
メモ
- 最近は「関数が第一級のオブジェクト」、要は「手続きの固まり」を文字列や数字のようにモノ扱いできる、RubyやJavaScriptのような言語が普及しているが、そういう言語では「カリー化」の手法が使える。