summaryrefslogtreecommitdiff
path: root/tree.sig
blob: 8967f83fa2433ae09fbaa0f1b7c0235ad8b700b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 option -> 'a * 'v option) -> 'a * ('k, 'v) t

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