Module Map_gen

type t('key, +'a) = pri
  1. | Empty
  2. | Leaf of {
    1. k: 'key,
    2. v: 'a,
    }
  3. | Node of {
    1. l: t('key, 'a),
    2. k: 'key,
    3. v: 'a,
    4. r: t('key, 'a),
    5. h: int,
    }
;
let cardinal: t('a, 'b) => int;
let bindings: t('a, 'b) => list(('a, 'b));
let fill_array_with_f: t('a, 'b) => int => array('c) => ('a => 'b => 'c) => int;
let fill_array_aux: t('a, 'b) => int => array(('a, 'b)) => int;
let to_sorted_array: t('key, 'a) => array(('key, 'a));
let to_sorted_array_with_f: t('a, 'b) => ('a => 'b => 'c) => array('c);
let keys: t('a, 'b) => list('a);
let height: t('a, 'b) => int;
let singleton: 'a => 'b => t('a, 'b);
let unsafe_node: 'a => 'b => t('a, 'b) => t('a, 'b) => int => t('a, 'b);
let unsafe_two_elements: 'a => 'b => 'a => 'b => t('a, 'b);

smaller comes first

let bal: t('a, 'b) => 'a => 'b => t('a, 'b) => t('a, 'b);
let empty: t('a, 'b);
let is_empty: t('a, 'b) => bool;
let merge: t('a, 'b) => t('a, 'b) => t('a, 'b);
let iter: t('a, 'b) => ('a => 'b => unit) => unit;
let map: t('a, 'b) => ('b => 'c) => t('a, 'c);
let mapi: t('a, 'b) => ('a => 'b => 'c) => t('a, 'c);
let fold: t('a, 'b) => 'c => ('a => 'b => 'c => 'c) => 'c;
let for_all: t('a, 'b) => ('a => 'b => bool) => bool;
let exists: t('a, 'b) => ('a => 'b => bool) => bool;
let join: t('a, 'b) => 'a => 'b => t('a, 'b) => t('a, 'b);
let concat: t('a, 'b) => t('a, 'b) => t('a, 'b);
let concat_or_join: t('a, 'b) => 'a => option('b) => t('a, 'b) => t('a, 'b);
module type S = { ... };