Hmap.MakeSourcemodule H : sig ... endunion_eq f m m' is equivalent to merge (fun k d d' -> match d, d' with | None, _ -> d' | _, None -> d | Some a, Some a' -> if a == a' then d else Some (f k a a')) m m'
union_map_eq f g m m' is equivalent to merge (fun k d d' -> match d, d' with | None, None -> assert false | None, Some a' -> Some (g k a') | Some a, None -> Some (g k a) | Some a, Some a' -> if a == a' then d else Some (f k a a')) m m'