[#30743] 大きな数の大まかな割り算 — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

17 messages 2007/05/01

[#30827] Supporting Fiber — SASADA Koichi <ko1@...>

 ささだです。

22 messages 2007/05/27

[ruby-dev:30802] Re: tail call optimization

From: SASADA Koichi <ko1@...>
Date: 2007-05-21 16:48:34 UTC
List: ruby-dev #30802
 ささだです.

Yukihiro Matsumoto wrote:
> (4) 入れるし使うけど別に触れ回ることまではしない
> 
> くらいでいかがでしょう? 仕様については問題ないんじゃないかと
> 思います。Rubyの場合、aliasとかあるんで本当に再帰なのか判定
> するのにコストがかかりますから、jumpへの最適化は結構難しいん
> でないかと思いますし。

 これは末尾再帰の最適化の話ですか.Rubyの文法を守る限り,ジャンプへの変
換は絶対に無理なんじゃないかと思います.Javaでいう,privateメソッドを作
るのならなんとでもなりそうですが.

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

 そこまでするならループでいいような気はします.気のせいかしらん.

 メソッド内での retry(args) とか,ふと思いつきました.

def cnt n
  retry n-1 if n>0
end

 って,ブロック中では使えないからダメか.

-- 
// SASADA Koichi at atdot dot net


In This Thread