Immutableなイテレータ
Xtalのイテレータは、ImmutableであってもOKなように設計されています。
前回の説明では簡単のために、「iter_nextの最初の戻り値は次があるかどうか」、と書いたのですが、正確に言うと「次があるなら続きを返せるイテレータを返す」ということになっています。
mutableなイテレータの場合、多くの場合は自分自身を返します。
Immutableなイテレータのサンプルです。
MyImmutableIterator: class{ _n; initialize: method(n){ _n = n; } iter_next: method{ return MyImmutableIterator(_n+1), _n; } iter_first: iter_next; } iter: MyImmutableIterator(5); iter{ it.p; } //=> 5 //=> 6 //=> 7 //=> 8 //=> 以下無限に