Ruby の Enumerator でジェネレータを作ったり,遅延評価してみる
Keywords:
Ruby には Enumerable モジュールってのがあって,これを include したオブジェクトは,自身に対して何かしらの反復処理ができるようになる*1.
また,その反復処理を用いた Enumerable#map とか Enumerable#select*2 とか Enumerable#reduce とかが使えるようになる.
更に,Enumerator というものがある.Enumerable がモジュールなのに対して,Enumerator はクラスなので,インスタンス化できる.また,Enumerator は Enumerable を include している.この Enumerator は,外部イテレータ,いわゆるジェネレータとして使える.