Hmap provides heterogeneous value maps for OCaml. These maps bind keys to values with arbitrary types. Keys witness the type of the value they are bound to which allows to add and lookup bindings in a type safe manner.