Fiber

thunk じゃねー trunk だー。でもある意味正しいかも (笑)

Fiber も coroutine もよく知らないけれど、以下のコードで foo! が表示されるのは正しいのかな。

f1 = f2 = nil
f1 = Fiber.new do
    f2.yield
end
f2 = Fiber.new do
    f1.yield # (A)
    puts "foo!"
end
f1.yield # (B)

f1 の Fiber が終わったら、直感的には (B) の直後に戻ってきて欲しい気がする。というか、f2 の Fiber は 1 回しか yield していないのに、(A) の yield の後になぜ走り出せるのだろう。継続とは違うってことかな。