すぐに混乱してしまうので、端的にまとめてみました。
勉強しながら少しづつ修正しています。
間違いがありましたら、ご指摘いただけると幸いです。
ラムダとクロージャ
ラムダ(無名関数)
使い捨ての名前のない関数。
クロージャ
関数を返す関数の中で、 変数を束縛(bind/capture)する関数。
※クロージャと関数を返す関数の違い → 変数を束縛するかしないか。
部分適用とカリー化
部分適用
クロージャ等を利用して引数の数の少ない関数を作ること。
(下記Rubyコードのうち、invを導出すること)
カリー化
部分適用の中でも、関数の引数をひとつだけにすること。
複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること。
(下記Rubyコードのうち、cdivを導出すること)