は、私はこのような何かを行うことができます:スケーラの理解のための怠惰はいつですか? 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
を取得します。
"何かのようなものですが、後者の表現は10000001個の要素を返すようですが、50005000ではありません。Whisky tango foxtrot? – Malvolio
@Malvolio注目に感謝! 'j 'は' 1から10000 'ではなく、' i + 1から10000 'まででなければならない。今修正されました。 –
D'oh。私は問題だけでなく、解決策に気づいたはずです。私は引数を無視してマップ関数を見つめていました。 – Malvolio