[#35688] サブクラスのオブジェクト生成時に、スーパークラスの初期化を行うには ? — Onodera Takafumi <onodera-tak@...>

9 messages 2002/08/01

[#35772] Unsecure world writeable dirの警告 — "井上 浩一" <kyoui32@...>

=1B$B0f>e$G$9!#=1B(B

31 messages 2002/08/26
[#35774] Re: Unsecure world writeable dir の警告 — matz@... (Yukihiro Matsumoto) 2002/08/26

まつもと ゆきひろです

[#35775] Re: Unsecure world writeabledir の警告 — nobu.nakada@... 2002/08/26

なかだです。

[#35776] Re: Unsecure world writeabledir の警告 — matz@... (Yukihiro Matsumoto) 2002/08/26

まつもと ゆきひろです

[#35778] Re: Unsecure world writeabledir の警告 — nobu.nakada@... 2002/08/26

なかだです。

[#35779] Re: Unsecure world writeabledir の警告 — WATANABE Hirofumi <eban@...> 2002/08/26

わたなべです。

[#35780] Re: Unsecure world writeabledir の警告 — nobu.nakada@... 2002/08/26

なかだです。

[#35784] Re: Unsecure world writeabledir の警告 — "U.Nakamura" <usa@...> 2002/08/26

こんにちは、なかむら(う)です。

[#35854] Re: Unsecure world writeabledir の警告 — "Inoue" <rubyist@...1.117.ne.jp> 2002/09/04

井上です。

[#35865] Re: Unsecure world writeabledir の警告 — Koji Arai <JCA02266@...> 2002/09/05

新井です。

[#35866] Re: Unsecure world writeabledir の警告 — matz@... (Yukihiro Matsumoto) 2002/09/06

まつもと ゆきひろです

[#35789] multipart な CGI を速くしたい — Takashi Kanai <kanai@...4u.or.jp>

Windows上でRubyとMySQLを使ってショッピングサイトのようなものを作って

17 messages 2002/08/28

[ruby-list:35735] Re: tail recursion elimination

From: Takaaki Tateishi <ttate@...>
Date: 2002-08-10 14:20:34 UTC
List: ruby-list #35735
At Sat, 10 Aug 2002 22:07:42 +0900,
> > ruby-talkを見ている方には重複してしまいますが,ruby-optimizerという
> > メソッドの最適化もどきを行う拡張モジュールを紹介させて下さい.
> > 
> >   http://www.ruby-lang.org/en/raa-list.rhtml?name=Optimization+Module
> 
> こういう内部構造に依存するものは、本体に組み込むべきという気が
> するので、ruby-devに行ったほうがいいかも。

ええ,内部構造についてはruby-dev/ruby-extなりで助けを求めることに
なると思います.そのときはよろしくお願いします.

> > 単純に解析木を組換えることでスピードを少し向上させるものです.また末尾
> > 再帰除去も行います.現在いくつか不具合はありますが,だいたいうまく動く
> > ようです.
> 
> 不具合というのはどんなところでしょうか。

tail-recursionの除去にもう少しきつい制限が必要なのです.現在は,

def fact_(x, c)
  if( x == 1 )              # (1)
    c.call(x)
  else
    fact_(x-1, proc{|n| x * c.call(n)})  # (2)
  end
end

という関数があると,(2)の式の前に

    x,c = x-1, proc{|n| x * c.call(n)}

という多重代入の式を挿入して,その後は(1)の内容を直接コピーして構文
木上でループを作っています.そのため,上記の式は実は,

def fact_(x, c)
again:
  if( x == 1 )
    c.call(x)
  else
    x,c = x-1, proc{|n| x * c.call(n)}
    goto again
  end
end

のような疑似コードで表せます.あとで局所変数が使われてしまいますね.
このように,引数にブロックをとる場合には末尾再帰除去をしないようにし
ようと思っています.

あとは,GCが起こるとたまにSegmentation Faultするので,どこかまずいの
かと探しているところです.

> それと1.7でコンパイルエラーになりました。あと、nodeDump.cはリン
> クする必要はないですよね。

nodeDumpはデバグ用に取り込みました.
まだまだ手直しが必要ですし,ソースいじりたい人もdoDump()関数があった
方がやりやすいかなと思いまして.もちろん,本体には直接必要ないです.

パッチありがとうございます.
-- 
Takaaki Tateishi <ttate@kt.jaist.ac.jp>

In This Thread

Prev Next