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 tval input : 'a t ‑> ?pos:int ‑> ?len:int ‑> Core.Bytes.t ‑> 'a tinput t ?pos ?len s parses the first len characters of s, starting at position
pos. pos defaults to 0 and len defaults to reading up to the end of s.