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