まつもと ゆきひろです

In message "Re: [ruby-dev:30800] tail call optimization"
    on Mon, 21 May 2007 14:23:38 +0900, SASADA Koichi <ko1 / atdot.net> writes:

|(1) これでRubyでも関数型プログラミングが出来るぞ,とふれまわる
|(2) Rubyに合わないから機能をなかった事にする(消す)
|(3) 知っている人しか使わないような,隠し機能にする
|  例えば ObjC 拡張や python like ブロックとかと同じ
|(3') とりあえず入れておくが,もうちょっと,仕様を検討する

(4) 入れるし使うけど別に触れ回ることまではしない

くらいでいかがでしょう? 仕様については問題ないんじゃないかと
思います。Rubyの場合、aliasとかあるんで本当に再帰なのか判定
するのにコストがかかりますから、jumpへの最適化は結構難しいん
でないかと思いますし。

ちょっと考えたのは、 recall というキーワードを用意して、
recall(args)で自分自身を呼び出し(jumpに最適化できる)というの
はどうでしょうねえ。