動機 必要なだけ要素が作られる無限リストを生成したい。 元ネタ Haskellを使う人に有名なフィボナッチ数列の生成方法がある。 fib = 0:1:zipWith (+) fib (tail fib)これで無限に続くフィボナッチ数列ができる。 Haskellのよいところは、遅延評価(lazy evaluation)なので n番目が必要になるまで、n番目が計算されないこと。 これをJavaでやりたい。 方針 (5/9更新) 「必要なだけ」といいながら1個先回りして作っていることに気づいた。 暇があったら改善しよう。 iterator.next()が最初に呼ばれた時に次の要素を生成するようにする。 そこで、リストの次の要素を計算するメソッドnextValueと、次のラッパーオブジェクト生成getInstanceをもつ、Iterableな抽象クラスLazyListを用意する。 iterator