The idea is that you have a Column.t list and a list of rows, where each row contains the data for each column. So e.g. 'a could be a record type CUSTOM(col_1) : int; col_2 : string , where the first column pulls out col_1 and the second column pulls out col_2. *