ところで、現在Enumerable#selectなど一連のメソッドは Arrayを返しているわけだが、 これをEnumeratorを返すようにすると、一種の遅延実行が実現できるのではないだろうか。
イテレーションの中でしか実行できないので、 関数型言語における遅延実行のようなわけにはいかないけれども。
要素数が非常に多くなると効率に違いが出てくるかもしれない。 無限な要素([1..]とか)も扱えるようになる。
とりあえず、将来への布石として 1.upto(3)などをブロックなしで呼んだときにはEnumeratorを返すようにする。
うーん、あんまり布石になってないかな。