mam kod:Dlaczego Seq.take w F # rzutów 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.
Ten kod wyników w pamięci. Czemu? I dlaczego wyjątek został zgłoszony po obliczeniu czasu (po zakończeniu operacji)? AFAIK, poszczególne elementy sekwencji są obliczane tylko w razie potrzeby?
wymuszenie utworzenia listy przed wykonaniem sekwencji. usunięcie nawiasów kwadratowych powinno pomóc –