[#352] ruby 1.1a5 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

38 messages 1997/09/01
[#353] Re: ruby 1.1a5 released — keiju@... (石塚圭樹 ) 1997/09/01

[#354] Re: ruby 1.1a5 released — matz@... (Yukihiro Matsumoto) 1997/09/01

まつもと ゆきひろです

[#356] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/01

まつもと ゆきひろです

[#357] Re: methods [Re: ruby 1.1a5 released] — keiju@... (Keiju ISHITSUKA) 1997/09/01

けいじゅ@日本ラショナルソフトウェアです.

[#359] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#363] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#374] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#376] Re: methods [Re: ruby 1.1a5 released] — keiju@... (Keiju ISHITSUKA) 1997/09/02

けいじゅ@日本ラショナルソフトウェアです.

[#382] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#390] Re: methods [Re: ruby 1.1a5 released] — keiju@... (Keiju ISHITSUKA) 1997/09/03

けいじゅ@日本ラショナルソフトウェアです.

[#391] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/03

まつもと ゆきひろです

[#441] How to report a bug — takagi@... (TAKAGI Hiromitsu)

Bus error が出ました。

15 messages 1997/09/09

[#461] [Q] ruby-socket(mswin32) — Masaki Suketa <suke@...>

助田です

27 messages 1997/09/11
[#462] Re: [Q] ruby-socket(mswin32) — matz@... (Yukihiro Matsumoto) 1997/09/11

まつもと ゆきひろです

[#463] Re: [Q] ruby-socket(mswin32) — Masaki Suketa <suke@...> 1997/09/11

助田です

[#464] Re: [Q] ruby-socket(mswin32) — matz@... (Yukihiro Matsumoto) 1997/09/11

まつもと ゆきひろです

[#467] Re: [Q] ruby-socket(mswin32) — WATANABE Hirofumi <watanabe@...> 1997/09/11

わたなべです.

[#594] BUG?(marshal) — Masaki Suketa <suke@...>

以下のプログラムを実行した時に(3)と(4)で出力結果が違います。

17 messages 1997/09/30

[ruby-dev:558] Tail recursion (Re: optimize (...))

From: "EGUCHI Osamu" <eguchi@...>
Date: 1997-09-27 09:54:39 UTC
List: ruby-dev #558
えぐち です。

----------
> 件名 : [ruby-dev:549] Re: optimize (Re: Assigne to special variable)
> 
> まつもと ゆきひろです
> | obj = obj + m  --> obj += m
> |
> |もピープホールの一種じゃないかな、これだけでもエバるときに
> |若干手数が減ると思うです?
> 
> 結局 obj += m は obj = obj + m に戻して評価してますからねえ.
> それほど効果は出ないかも.

eval のトラバースがちょっと減るですね、

> |また、メソッドのテールリカージョンは可能だとおもいます。
> 
> できます? 昔から野郎と思ってできないでいるんですけど.アイ
> ディアだけでも大歓迎です.

教科書通り2分木のトラバースを例にとります、

class MyNode
  def initialize(key, info)
    @left  = nil
    @right = nil
    @key   = key
    @info  = date
  end
   ...
  def print_all
     left.print_all
     print keyinspect, ":", info.inspect, "\n"
     right.print_all
  end
end

なんてありがちですよね、この MyNode#print_all は、

def print_all
  n = self
  while TRUE
    n.left.print_all
    print n.key.inspect, ":", n.info.inspect, "\n"
    break unless m.right
    n = m.right
  end
end

に置き換えられます。
(メンバアクセス関数の定義は端折ってます)

可能なのはクラス#メソッドが一致でかつ特異メソッドがない場合です。
これは eval の時までわからないです。
逆に eval が手抜きできるわけですが、検査コストは大きいでしょうか?
また、これをしてまで call/return のオーバーヘッドは大きいのか不明です。

> |> たとえば現在のrubyではwhileなどの単純ループやclass/module定
> |> 義などでもsetjmpを使っています.この辺はパーザとの連係で減ら
> |> せるのではないかと考えています.そのためにはrb_evalの非再帰
> |> 化が必要そうですけど.

これって、そういったことですか?
(テールリカージョンに限りませんが、、)


In This Thread

Prev Next