# Module Identifiable.S.Map

    module Map: sig .. end

    include Map.S

    val filter_map : 'a Identifiable.S.t -> f:(key -> 'a -> 'b option) -> 'b Identifiable.S.t

    val of_list : (key * 'a) list -> 'a Identifiable.S.t

    val disjoint_union : ?eq:('a -> 'a -> bool) ->
           'a Identifiable.S.t -> 'a Identifiable.S.t -> 'a Identifiable.S.t

`disjoint_union m1 m2` contains all bindings from `m1` and `m2`. If some binding is present in both and the associated value is not equal, a Fatal_error is raised

    val union_right : 'a Identifiable.S.t -> 'a Identifiable.S.t -> 'a Identifiable.S.t

`union_right m1 m2` contains all bindings from `m1` and `m2`. If some binding is present in both, the one from `m2` is taken

    val union_left : 'a Identifiable.S.t -> 'a Identifiable.S.t -> 'a Identifiable.S.t

`union_left m1 m2 = union_right m2 m1`

    val union_merge : ('a -> 'a -> 'a) ->
           'a Identifiable.S.t -> 'a Identifiable.S.t -> 'a Identifiable.S.t

    val rename : key Identifiable.S.t -> key -> key

    val map_keys : (key -> key) -> 'a Identifiable.S.t -> 'a Identifiable.S.t

    val keys : 'a Identifiable.S.t -> Identifiable.S.Set.t

    val data : 'a Identifiable.S.t -> 'a list

    val of_set : (key -> 'a) -> Identifiable.S.Set.t -> 'a Identifiable.S.t

    val transpose_keys_and_data : key Identifiable.S.t -> key Identifiable.S.t

    val transpose_keys_and_data_set : key Identifiable.S.t -> Identifiable.S.Set.t Identifiable.S.t

    val print : (Format.formatter -> 'a -> unit) ->
           Format.formatter -> 'a Identifiable.S.t -> unit