高木のブログ

【Ruby】カリー化と部分適用

2020/10/21

※ 下書きにずっと残っていていつまで経っても公開できそうにないので、まとめ終わる前に自分用のメモとして公開する(カリー化の使い所がいまいちわかっていない)

カリー化

2つの引数の積を返すメソッド(正確にはProcオブジェクト(ラムダ))

multiple = -> (num1, num2) { num1 * num2 }
#=> #<Proc:0x00007fb112059130@(irb):6 (lambda)>

multiple.call(2, 5)
#=> 10
curry_multiple = multiple.curry
#=> #<Proc:0x00007fb0f1092af0 (lambda)>

curry_multiple.call(2)
#=> #<Proc:0x00007fb1210efa40 (lambda)>

curry_multiple.call(2).call(5)
#=> 10

部分適用

引数を3倍にして返すProcオブジェクト

triple = curry_multiple.call(3)
#=> #<Proc:0x00007fb121139cf8 (lambda)>

triple.call(5)
#=> 15

参考

Procのカリー化と部分適用 - Qiita


Pixela