まつもと ゆきひろです

In message "[ruby-list:14015] Re: What is callcc? (Re: iterator <-> cursor)"
    on 99/04/22, Shugo Maeda <shugo / netlab.co.jp> writes:

|> 「継続すると本来はすべてのスタックおよびローカル変数を復活する。
|> ただし現在の実装ではトップレベルのローカル変数とブロック変数は
|> 戻らない」
|
|というよりは本来は戻らない方がSchemeのcallccの仕様のようです。
|Rubyでパフォーマンスを落とさずにSchemeの仕様に合わせるのは難しそ
|うです。

そんなことはないです.それにこれをちゃんと直さないと

    $n = 0
    def foo()
      x = 0
    #  binding
      callcc {|$cont|}
      puts "#$n) x = #{x}"
      x = 1
      exit if ($n+=1) == 2
      $cont.call
    end
    foo
    #0) x = 0
    #1) x = 0

が,コメントアウトしたbindingの有無で挙動が変わるのでまずい
ですから,ちゃんと直さないと.結果としてschemeに合わせること
になると思います.で,今修正したら5行でした.あっけない.

んでもってパフォーマンスですが,検証してませんが,ほとんど変
わらないでしょう.
                                まつもと ゆきひろ /:|)