summaryrefslogtreecommitdiff
path: root/tree.sig
blob: a1ebf86fdba8ec05a1cec083e87797c838a5cf4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
signature TREE = sig
  type ('k, 'v) t

  val empty: ('k, 'v) t

  type 'k cmp = 'k -> 'k -> order

  val insert: 'k cmp -> ('k, 'v) t -> 'k -> 'v -> 'v option * ('k, 'v) t

  val delete: 'k cmp -> ('k, 'v) t -> 'k -> 'v option * ('k, 'v) t

  val lookup: 'k cmp -> ('k, 'v) t -> 'k -> 'v option
  val lookup2: 'k cmp -> ('k, 'v) t -> 'k ->
        ('v -> 'v option * 'a) * 'a -> 'a * ('k, 'v) t

  val print: ('k, 'v) t -> ('k -> string) -> ('v -> string) -> unit
end