PMap

`sig type ('a, 'b) t val empty : ('a, 'b) PMap.t val is_empty : ('a, 'b) PMap.t -> bool val create : ('a -> 'a -> int) -> ('a, 'b) PMap.t val add : 'a -> 'b -> ('a, 'b) PMap.t -> ('a, 'b) PMap.t val find : 'a -> ('a, 'b) PMap.t -> 'b val remove : 'a -> ('a, 'b) PMap.t -> ('a, 'b) PMap.t val mem : 'a -> ('a, 'b) PMap.t -> bool val exists : 'a -> ('a, 'b) PMap.t -> bool val iter : ('a -> 'b -> unit) -> ('a, 'b) PMap.t -> unit val map : ('b -> 'c) -> ('a, 'b) PMap.t -> ('a, 'c) PMap.t val mapi : ('a -> 'b -> 'c) -> ('a, 'b) PMap.t -> ('a, 'c) PMap.t val fold : ('b -> 'c -> 'c) -> ('a, 'b) PMap.t -> 'c -> 'c val foldi : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) PMap.t -> 'c -> 'c val enum : ('a, 'b) PMap.t -> ('a * 'b) Enum.t val of_enum : ?cmp:('a -> 'a -> int) -> ('a * 'b) Enum.t -> ('a, 'b) PMap.t end`