From: Yusuke ENDOH Date: 2008-02-11T23:53:59+09:00 Subject: [ruby-dev:33701] Re: Suggestion: Proc#curry 遠藤です。 08/02/11 に Yukihiro Matsumoto さんは書きました: > まつもと ゆきひろです > > In message "Re: [ruby-dev:33676] Suggestion: Proc#curry" > on Sat, 9 Feb 2008 20:40:19 +0900, "Yusuke ENDOH" writes: > > |http://subtech.g.hatena.ne.jp/cho45/20071119/1195420784 > |で提案されている Proc#curry を組み込むのはどうでしょうか。 > | > |proc {|x, y, z| x + y + z }.curry > |が > |proc {|x| proc {|y| proc {|z| x + y + z } } } > |と同じ意味になります。 > > うーん、カリー化って カリー化というのは、「n 個の引数を同時に受け取って実行する関数」を、 「引数を 1 個ずつ n 回の呼び出しに分けて受け取った後に実行する関数」 に変えることです。 型で言うなら (a×b×c×d)->z な関数から a->b->c->d->z な関数にする ことです。 > f = proc{|x, y, z| x + y + z } > f2 = f.curry(2) > f3 = f2.curry(3) > f3[4] # => 9 > > ってAPIなんじゃないんでしょうか。それともたいした違いじゃな > い? これはカリー化ではなくて部分適用ですね。これはこれで意味がある かもしれません。 -- Yusuke ENDOH