Module type Identifiable.Map

module type Map = sig .. end

module T: Map.OrderedType;
include Map.S;
let of_list: list((key, 'a)) => t('a);
let disjoint_union:
  (
    ~eq: ('a, 'a) => bool=?,
    ~print: (Format.formatter, 'a) => unit=?,
    t('a),
    t('a)
  ) =>
  t('a);

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

let union_right: (t('a), t('a)) => t('a);

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

let union_left: (t('a), t('a)) => t('a);

union_left m1 m2 = union_right m2 m1

let union_merge: (('a, 'a) => 'a, t('a), t('a)) => t('a);
let rename: (t(key), key) => key;
let map_keys: (key => key, t('a)) => t('a);
let keys: t('a) => Stdlib.Set.Make(T).t;
let data: t('a) => list('a);
let of_set: (key => 'a, Stdlib.Set.Make(T).t) => t('a);
let transpose_keys_and_data: t(key) => t(key);
let transpose_keys_and_data_set: t(key) => t(Stdlib.Set.Make(T).t);
let print: ((Format.formatter, 'a) => unit, Format.formatter, t('a)) => unit;