在 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
,即使它应该被懒惰地评估。