module Biocaml_iset:sig..end
Sets of integers represented as ranges
This data structure is efficient for large sets of integers where
many adjacent integers are all part of the set. This will have
higher overhead for sets with lots of point elements, but will be
much more efficient for sets containing mostly ranges.
type t
val empty : t val is_empty : t -> booltrue if the set is empty.val mem : t -> int -> boolval add : t -> int -> t val add_range : t -> int -> int -> t add_range t lo hi adds the range of integers lo, hi (including both endpoints) to
the given set, returning a new setInvalid_argument if lo > hival intersects_range : t -> int -> int -> boolval singleton : int -> t val remove : t -> int -> t val remove_range : t -> int -> int -> t remove_range lo hi t removes a range of elements from the given set, returning a new setInvalid_argument if lo > hival union : t -> t -> t val inter : t -> t -> t val diff : t -> t -> t union and inter, order matters here.val compl : t -> t val compare : t -> t -> intval equal : t -> t -> boolval subset : t -> t -> boolsubset t u returns true if t is a subset of uval from : t -> n:int -> t from ~n t returns the portion of t in the range n, max_intval after : t -> n:int -> t after ~n t returns the portion of t in the range n+1, max_intval until : t -> n:int -> t until ~n t returns the portion of t in the range min_int, nval before : t -> n:int -> t before x t returns the portion of t in the range min_int, n-1val iter : t -> f:(int -> unit) -> unititer f t calls f once for each element of tval iter_range : t -> f:(int -> int -> unit) -> unititer_range ~f t calls f once for each contiguous range of t.
The contiguous ranges of a set are sequences of adjacent integers
all part of the set.val fold : t -> init:'a -> f:(int -> 'a -> 'a) -> 'afold f t x0 returns the final result of merging each element of
t into x0 using merge function fval fold_range : t -> init:'a -> f:(int -> int -> 'a -> 'a) -> 'aval for_all : t -> f:(int -> bool) -> boolval exists : t -> f:(int -> bool) -> boolval filter : t -> f:(int -> bool) -> t val partition : t -> f:(int -> bool) -> t * t val cardinal : t -> intval elements : t -> int listval ranges : t -> (int * int) listval min_elt : t -> intval max_elt : t -> intval choose : t -> intval to_stream : t -> (int * int) Stream.tval of_stream : (int * int) Stream.t -> t val of_list : (int * int) list -> t