フィボナッチ数ってあるじゃないですか。
Java8のStreamを使って書いてみます。Groovyで。
import static java.util.stream.Collectors.* import java.util.stream.* println Stream.iterate([1l, 1l]) { (old1, old2) = it [old1+old2, old1] }.map{it[1]}.limit(10).collect(toList())
こんな感じですか。10個のフィボナッチ数を表示します。
無限ストリームなんかを作っちゃっています。
% groovy fib.groovy [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
調べると、streamてのは本質的にはIteratorのフレームワークですな。
目的は並列処理うんぬんが主眼かもしれませんが、機構としてはIterator(Spliterator)のチェインをフルーエントなビルダーで作って、ケツのところでぶん回す、というものです。遅延リストとは違うし遅延評価とも関係ない*1。制約が多くてそれがおもしろい。別に記事書くかも。