前田です。 At Fri, 23 Apr 1999 14:38:08 +0900, <toyofuku / juice.or.jp> wrote: > > というよりは本来は戻らない方がSchemeのcallccの仕様のようです。 > > ん、「戻らない」ですか。 はい。 豊福さんのコードだと無限ループになってしまうので、 > def foo11() > z = $n + 20 # 1回目 120、2回目 220 > callcc {|$c|} if $n == 100 # 1回目だけ calcc する ここを if $n == 100 # 1回目だけ calcc する $c = callcc {|c| c} end > z = $n + 21 # 1回目 121、2回目 221 > end > def foo2() > $c.call > end ここを def foo2() puts "$c.call" $c.call(nil) if $c end として試すと、 > で $c.call 直後の x,y,z は 3,111,121 ですか。 z: 121 y: 111 z: 221 y: 211 $c.call z: 221 y: 211 z: 221 y: 211 $c.call x: 3 となりました。 「戻らない」という仕様ならこれで合っているような気がするのですが、 よろしいでしょうか。 -- 前田 修吾 call/ccを使ったコードって読むのが難しいですね(^_^;