豊福@パパイヤです。

前田さん
>> 内部イテレータを使って外部イテレータを普通は実装できないが
>> 実は,Ruby ではできるという部分は私にもよくわかりません.
 ...
> イテレータからカーソルへの変換は普通できません。
> Rubyでもスマートな方法はないんじゃないかと思うのですが、スレッド
> を使えばできないことはないですね。

まつもとさん
> 参考までに私がスレッドを使って書いた外部イテレータ(カーソル)
> を載せておきますです.

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

  なるほど。やはり実際のコードで説明してもらうとわかり
(わかったつもりになり)やすいですね。要は、

「一気にループをつっ走ろうとする内部イテレータを一時停止
させ、データを取り出し、自分の方の処理を行なった後、また
内部イテレータを続行させる」
この「一時停止、続行」を普通はできないが Ruby では thread
や callcc で実現できる。

ということですね。
---
                        豊福@パパイヤ
                        unbound / papaya.juice.or.jp
                        toyofuku / juice.or.jp