Module Hashtbl.M

M is meant to be used in combination with OCaml applicative functor types:

type string_to_int_table = int Hashtbl.M(String).t

which stands for:

type string_to_int_table = (String.t, int) Hashtbl.t

The point is that int Hashtbl.M(String).t supports deriving, whereas the second syntax doesn't (because t_of_sexp doesn't know what comparison/hash function to use).



type nonrec 'v t = (K.t'v) t