title: Why can't I go twice through the rows of a CSV provider?
body: <p>In some languages after one goes through a lazy sequence it becomes exhausted. That is not the case with <code>F#</code>:</p>
  
  <pre><code>let mySeq = seq [1..5]
  
  mySeq |&gt; Seq.iter (fun x -&gt; printfn "%A" &lt;| x)
  mySeq |&gt; Seq.iter (fun x -&gt; printfn "%A" &lt;| x)
  
  1
  2
  3
  4
  5
  1
  2
  3
  4
  5
  </code></pre>
  
  <p>However, it looks like one can go only once through the rows of a CSV provider:</p>
  
  <pre><code>open FSharp.Data
  
  [&lt;Literal&gt;]
  let foldr = __SOURCE_DIRECTORY__ + @"\data\"
  
  [&lt;Literal&gt;]
  let csvPath = foldr + @"AssetInfoFS.csv"
  
  type AssetsInfo = CsvProvider&lt;Sample=csvPath,
                                HasHeaders=true,
                                ResolutionFolder=csvPath,
                                AssumeMissingValues=false,
                                CacheRows=false&gt;
  
  let assetInfo = AssetsInfo.Load(csvPath)
  assetInfo.Rows |&gt; Seq.iter (fun x -&gt; printfn "%A" &lt;| x) // Works fine 1st time
  assetInfo.Rows |&gt; Seq.iter (fun x -&gt; printfn "%A" &lt;| x) // 2nd time exception
  </code></pre>
  
  <p>Why does that happen?</p>