Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

カリー化ってなんぞや

カリー化ってなんじゃらほい

インド人もびっくりなカレーとかそういうのじゃなくて?

そもそも

カリー化を知ったのはOnline Study TokyoBouldering.jsっていうオンライン勉強会。自分は蝶本持ってないんだけど買わなきゃなぁ。

んで

カリー化ってのはf(x, y)であるときg(x)(y)ならgはfのカリー化なんだ……ってよくわからん。
要はfをカリー化するとgになるよーってわけで、変化の話なら並べて書けば分かりやすいはず。

f(x, y)
g(x)(y)

なるほど、引数がなんか大変なことになってるな!

書いてみよう

なんか分かった気がするので書いてみよう。とりあえずxとyをかけ合わせる感じの関数を、っと。

function g(x, y) {
  return x * y;
}

んでこれをカリー化、と。

function f(x){
  return function(y) {
    return x * y;
  }
}

なるほど。これで何が嬉しいんだろう。

嬉しいこと

この場合は何も嬉しくないんだけど、実はxをごにょごにょしてからyをうんたらしないといけない処理で、xをごにょごにょするのが実は結構大変だったりするとカリー化した場合には一度ごにょった後は何度も返り値の関数を使いまわせるから処理の回数が減らせるよね、って感じかな。

こんな書き方もあるんだー、ってわけで覚えておこう。