`module Sort_key : sig ... end`

A sortable value. The sorting order of a row is specified by specifying a conversion to this type.

`module Sort_dir : sig ... end`
`include Table_intf.Sort_spec with module Sort_key := Sort_key and module Sort_dir := Sort_dir`
`module Sort_key : Table_intf.Sort_key`
`module Sort_dir : Table_intf.Sort_dir`

`compare_keys` and `compare_rows_if_equal_keys` are comparison functions used to compare rows in a table in order to sort them.

`compare_keys` compares two rows based on a single column in the table's sort criteria.

`compare_rows_if_equal_keys` compares two rows based on their row ids, and is only called if the calls to `compare_key` for all columns in the table's sort criteria return 0. The sort direction is determined by the first column in the sort criteria.

`val compare_keys : Sort_dir.t ‑> Sort_key.t ‑> Sort_key.t ‑> int`
`val compare_rows_if_equal_keys : cmp_row_id:('row_id ‑> 'row_id ‑> int) ‑> Sort_dir.t ‑> 'row_id ‑> 'row_id ‑> int`