Я знаю, что потоки должны быть лениво оценены последовательностями в Scala, но я думаю, что я страдаю от какого-то фундаментального недоразумения, потому что они кажутся более нетерпеливыми, чем я ожидал.
В этом примере:
val initial = Stream(1)
lazy val bad = Stream(1/0)
println((initial ++ bad) take 1)
Я получаю a java.lang.ArithmeticException
, который, по-видимому, вызывает нулевое деление. Я ожидал бы, что bad
никогда не будет оценен, так как я попросил только один элемент из потока. Что не так?