我有一個代碼:爲什麼Seq.take F#中投的System.OutOfMemoryException
seq {for i in [1 .. 100000000] -> i} |> Seq.take 100000;;
Real: 00:00:00.000, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0
val it : seq<int> =
Error: Exception of type 'System.OutOfMemoryException' was thrown.
該代碼產生的內存不足。爲什麼?爲什麼在時間計算之後拋出異常(操作完成後)? AFAIK,單個序列元素僅根據需要進行計算?
您在創建序列之前強制創建列表。刪除方括號應該有幫助 –