イテレータ
外部イテレータを使って内部イテレータは作れるけど、
内部イテレータを使って外部イテレータは作れない。
...と今まで思ってたけど、普通に出来るな。どこでそう勘違いしてたんだろう俺?
class Iterator def initialize(it) cont = lambda do|ret| it.each do|x| ret = callcc do|cont| ret.call [cont,x] end end ret.call nil end @value = [cont,nil] end def current;@value[1];end def next;@value = callcc{|c|@value[0].call c};end end it = Iterator.new($<) puts it.current while it.next
というわけでD言語に継続くださ(ry