In einigen Sprachen, nachdem man eine Lazy-Sequenz durchläuft, wird es erschöpft. Das ist nicht der Fall mit F#
:Warum kann ich nicht zweimal durch die Zeilen eines CSV-Anbieters gehen?
let mySeq = seq [1..5]
mySeq |> Seq.iter (fun x -> printfn "%A" <| x)
mySeq |> Seq.iter (fun x -> printfn "%A" <| x)
1
2
3
4
5
1
2
3
4
5
aber es sieht aus wie ein nur einmal durch die Zeilen eines CSV-Provider gehen kann:
open FSharp.Data
[<Literal>]
let foldr = __SOURCE_DIRECTORY__ + @"\data\"
[<Literal>]
let csvPath = foldr + @"AssetInfoFS.csv"
type AssetsInfo = CsvProvider<Sample=csvPath,
HasHeaders=true,
ResolutionFolder=csvPath,
AssumeMissingValues=false,
CacheRows=false>
let assetInfo = AssetsInfo.Load(csvPath)
assetInfo.Rows |> Seq.iter (fun x -> printfn "%A" <| x) // Works fine 1st time
assetInfo.Rows |> Seq.iter (fun x -> printfn "%A" <| x) // 2nd time exception
Warum ist das passiert?