豊福@パパイヤです。 前田さん >> 「継続すると本来はすべてのスタックおよびローカル変数を復活する。 >> ただし現在の実装ではトップレベルのローカル変数とブロック変数は >> 戻らない」 > > というよりは本来は戻らない方がSchemeのcallccの仕様のようです。 ん、「戻らない」ですか。 とすると本来は def foo() $n = 100; x = 1; foo1() # 1回目 $n = 200; x = 2; foo1() # 2回目 x = 3; foo2(); end def foo1() y = $n + 10 # 1回目 110、2回目 210 foo11() y = $n + 11 # 1回目 111、2回目 211 end def foo11() z = $n + 20 # 1回目 120、2回目 220 callcc {|$c|} if $n == 100 # 1回目だけ calcc する z = $n + 21 # 1回目 121、2回目 221 end def foo2() $c.call end で $c.call 直後の x,y,z は 3,111,121 ですか。 --- 豊福@パパイヤ unbound / papaya.juice.or.jp toyofuku / juice.or.jp