At the lowest level, we model csv parsing as a fold over string arrays, one array per row. It is up to you to interpret the header row.
val create : ?strip:bool ‑> ?sep:char ‑> ?quote:[ `No_quoting | `Using of char ] ‑> fields_used:int array option ‑> init:'a ‑> f:(int ‑> 'a ‑> string Fast_queue.t ‑> 'a) ‑> unit ‑> 'a t