Scala: Streams handeln nicht faul?

Ich weiß, dass Streams in Scala träge ausgewertete Sequenzen sein sollen, aber ich glaube, ich leide unter einer Art grundlegendem Missverständnis, weil sie eifriger zu sein scheinen, als ich erwartet hätte.

In diesem Beispiel:

 val initial = Stream(1)
 lazy val bad = Stream(1/0)
 println((initial ++ bad) take 1)

Ich bekomme einjava.lang.ArithmeticException, was anscheinend durch Nulldivision verursacht wird. Das würde ich erwartenbad würde nie ausgewertet werden, da ich nur nach einem Element aus dem Stream gefragt habe. Was ist falsch?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage