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
//=> 以下無限に