From: matz@... (Yukihiro Matsumoto) Date: 1999-04-22T16:45:40+09:00 Subject: [ruby-list:14016] Re: What is callcc? (Re: iterator <-> cursor) まつもと ゆきひろです In message "[ruby-list:14015] Re: What is callcc? (Re: iterator <-> cursor)" on 99/04/22, Shugo Maeda 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行でした.あっけない. んでもってパフォーマンスですが,検証してませんが,ほとんど変 わらないでしょう. まつもと ゆきひろ /:|)