Set and Map implementations in OCaml