anchor.diff:  Columns with only `0`, `1`, `Yes`, `No`, `True`, or `False` will be set to `bool`. Columns with numerical values
   will be set to either `int`, `int64`, `decimal`, or `float`, in that order of preference.
   
  -If in any row a value is missing, by default the CSV type provider will infer a nullable (for `int` and `int64`) or an optional
  +If a value is missing in any row, by default the CSV type provider will infer a nullable (for `int` and `int64`) or an optional
   (for `bool`, `DateTime` and `Guid`). When a `decimal` would be inferred but there are missing values, we will infer a
   `float` instead, and use `Double.NaN` to represent those missing values. The `string` type is already inherently nullable,
   so by default we won't generate a `string option`. If you prefer to use optionals in all cases, you can set the static parameter
  
positive.code: 
  By default, the rows are cached so you can iterate over the `Rows` property multiple times without worrying.
  But if you will only iterate once, you can disable caching by setting the `CacheRows` static parameter of `CsvProvider`
  to `false` . If the number of rows is very big, you have to do this otherwise you may exhaust the memory.
  You can still cache the data at some point by using the `Cache` method, but only do that if you have already
  transformed the dataset to be smaller:
  *)
  
negative.code: 
  (**
  The numerical values of `Distance` and `Time` are both inferred as `decimal` (because they
  are small enough). Thus the type of `speed` becomes `decimal<metre/second>`. The compiler
  can then statically check that we're not comparing incompatible values - e.g. number in
  meters per second against a value in kilometres per hour.
  
  