高木のブログ

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

· 49 words · 1 minutes to read
Tags: Ruby

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

カリー化 🔗

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

Categories


Tags