Когда scala для понимания ленивости?

В Python я могу сделать что-то вроде этого:

lazy = ((i,j) for i in range(0,10000) for j in range(0,10000))
sum((1 for i in lazy))

Это займет некоторое время, но использование памяти будет постоянным.

Та же конструкция в scala:

(for(i<-0 to 10000; j<-i+1 to 10000) yield (i,j)).count((a:(Int,Int)) => true)

Через некоторое время, Я получаю java.lang.OutOfMemoryError , хотя его следует вычислять лениво.

14
задан tstenner 9 August 2011 в 12:18
поделиться