Scala 2.13 の LazyList は Stream[CallByNeed[A]]

以下のまとめでいくつか(最初は多少の勘違い含めて)LazyListに関してもtweetしてますが、Scala 2.13からStreamが非推奨になってLazyListというStreamと似てるけれど少し違うものが追加される予定らしいです。それの話

togetter.com

scala/LazyList.scala at a52482c7236a782adedf7523301a97659e4d720f · scala/scala · GitHub

LazyListは "先頭もlazyになった" ことが最大というかある意味唯一の違い(?)のようですが、それが、どういうことがよく考えたら

"LazyListの長さと、要素の評価のタイミングが別になった"

あるいは

"要素の存在の有無の決定と、要素の値の評価のタイミングが別になった"

みたいに言い換えることが出来ることに気が付きました。

たしかHaskellなどのListもそうなっていたはずです(うろ覚え)。

それの具体例を示そうと思ったら、そういう生成用メソッドがないので、自作しました

「こういうメソッドをLazyListのコンパニオンオブジェクトに追加しようぜ!」

という提案をするべきなんでしょうか・・・?(誰か代わりにしておいてくれていいですよ)

gist.github.com