Module Utils.Tree_map

A persistent map implemented as a balanced binary tree. The sexp_of function preserves and displays the tree structure.

A persistent map implemented as a balanced binary tree. The sexp_of function preserves and displays the tree structure.

type ('k, 'v) t =
  1. | Empty
  2. | Node of {
    1. key : 'k;
    2. value : 'v;
    3. left : ('k, 'v) t;
    4. right : ('k, 'v) t;
    5. height : Base.int;
    }
val empty : ('a, 'b) t
val height : ('a, 'b) t -> Base.int
val create : 'a -> 'b -> ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t
val balance_factor : ('a, 'b) t -> Base__Int.t
val rotate_right : ('a, 'b) t -> ('a, 'b) t
val rotate_left : ('a, 'b) t -> ('a, 'b) t
val rebalance : ('a, 'b) t -> ('a, 'b) t
val add : compare:('a -> 'a -> int) -> key:'a -> data:'b -> ('a, 'b) t -> ('a, 'b) t
val find : compare:('a -> 'b -> int) -> key:'a -> ('b, 'c) t -> 'c option
val mem : compare:('a -> 'b -> int) -> key:'a -> ('b, 'c) t -> bool
val fold : ('a, 'b) t -> init:'c -> f:(key:'a -> data:'b -> 'c -> 'c) -> 'c
val iter : ('a, 'b) t -> f:(key:'a -> data:'b -> unit) -> unit
val map : ('a, 'b) t -> f:('b -> 'c) -> ('a, 'c) t
val mapi : ('a, 'b) t -> f:(key:'a -> data:'b -> 'c) -> ('a, 'c) t
val to_alist : ('a, 'b) t -> ('a * 'b) Base.List.t
val of_alist : compare:('a -> 'a -> int) -> ('a * 'b) Base.List.t -> ('a, 'b) t
val sexp_of_t : ('a -> Base.Sexp.t) -> ('b -> Base.Sexp.t) -> ('a, 'b) t -> Base.Sexp.t

Sexp conversion that preserves tree structure