豊福@パパイヤです。 前田さん >> 内部イテレータを使って外部イテレータを普通は実装できないが >> 実は,Ruby ではできるという部分は私にもよくわかりません. ... > イテレータからカーソルへの変換は普通できません。 > Rubyでもスマートな方法はないんじゃないかと思うのですが、スレッド > を使えばできないことはないですね。 まつもとさん > 参考までに私がスレッドを使って書いた外部イテレータ(カーソル) > を載せておきますです. 稲葉さん > 1.3系なら, スレッドより遅いですけどcallccでもできるみたいです. なるほど。やはり実際のコードで説明してもらうとわかり (わかったつもりになり)やすいですね。要は、 「一気にループをつっ走ろうとする内部イテレータを一時停止 させ、データを取り出し、自分の方の処理を行なった後、また 内部イテレータを続行させる」 この「一時停止、続行」を普通はできないが Ruby では thread や callcc で実現できる。 ということですね。 --- 豊福@パパイヤ unbound / papaya.juice.or.jp toyofuku / juice.or.jp