私は深く「ネストされた」理解力を持っており、x、y、zの3つのレベルに簡略化されています。xaだけをStream
作成すると、yとzの計算も怠惰になることを望んでいました。
val stream = for {
x <- List(1, 2, 3).toStream
y <- List("foo", "bar", "baz")
z = {
println("Processed " + x + y)
x + y
}
} yield z
stream take (2) foreach (doSomething)
しかし、これは3つのプリントから明らかなように、3つの要素すべてを計算します。最初の2つだけを計算したいのは、これらがすべてストリームから取得するためです。toStream
2番目などを呼び出すことでこれを回避できList
ます。理解のあらゆるレベルでそれを呼ぶよりも良い方法はありますか?