# Module Identifiable.S.Map

    module Map: Identifiable.Map  with module T := T

    module T: Map.OrderedType

    include Map.S

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

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

    val disjoint_union : ?eq:('a -> 'a -> bool) ->
           ?print:(Format.formatter -> 'a -> unit) -> 'a t -> 'a t -> 'a 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 t -> 'a t -> 'a 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 t -> 'a t -> 'a t

`union_left m1 m2 = union_right m2 m1`

    val union_merge : ('a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t

    val rename : key t -> key -> key

    val map_keys : (key -> key) -> 'a t -> 'a t

    val keys : 'a t -> Set.Make(T).t

    val data : 'a t -> 'a list

    val of_set : (key -> 'a) -> Set.Make(T).t -> 'a t

    val transpose_keys_and_data : key t -> key t

    val transpose_keys_and_data_set : key t -> Set.Make(T).t t

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