Library
Module
Module type
Parameter
Class
Class type
Sets of integers implemented as Patricia trees.
Following Chris Okasaki and Andrew Gill's paper "Fast Mergeable Integer Maps".
This is a purely applicative data structure implementing a large fragment of Set.S with type elt = int
, with identical specifications and similar performances.
One advantage of Patricia trees is unicity of representation. Thus OCaml's structural comparison can be used on sets.
val empty : t
val is_empty : t -> bool
val cardinal : t -> int
Notes:
min_elt
, max_elt
, and elements
are purposely not provided, as there is no efficient way to implement them. If needed, you can implement min_elt s
with fold min s (choose s)
, and similarly for max_elt
, but this has linear complexity.map
and split
are merely implemented using fold
and add
.Additional functions not appearing in the signature Set.S
from ocaml standard library.
intersect u v
determines whether sets u
and v
have a non-empty intersection.
Big-endian Patricia trees
module Big : sig ... end
Big-endian Patricia trees with nonnegative elements only.
Changes:
add
and singleton
raise Invalid_arg
if a negative element is givenmem
is slightly faster (the Patricia tree is now a search tree)min_elt
and max_elt
are provided (and efficient)elements
returns a list with elements in ascending ordermodule BigPos : sig ... end