稲葉です.

Subject: [ruby-list:13530] iterator <-> cursor (Re: iterator for Dummies)
From: Shugo Maeda <shugo / netlab.co.jp>
Date: Fri, 9 Apr 1999 10:26:21 +0900

> 前田です。
	:
> 逆に、イテレータからカーソルへの変換は普通できません。
> Rubyでもスマートな方法はないんじゃないかと思うのですが、スレッド
> を使えばできないことはないですね。

1.3系なら, スレッドより遅いですけどcallccでもできるみたいです.

class Cursor
  def initialize(iter)
    @iter = iter
    @cont = nil
    @finished = false
  end

  def next
    return nil if @finished
    @cont.call if @cont

    @iter.call {|obj|
      @finished = true if obj.nil?
      callcc{|@cont| return obj}
    }
  end
end

# 近頃callccで遊んでます...
--
	稲葉 浩人 <inaba / sdd.tokyo-sc.toshiba.co.jp/inaba / st.rim.or.jp>