Module Global.Set

include NS.Set.S with type elt := Llair__.LlairExp.Global.exp
type compare_elt
type t
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
type ('a, 'compare_a) comparer := 'a -> 'a -> int
type compare

compare types are equipped with functions to support use of @@deriving compare, equal, sexp on types parameterized by such singleton types for compare functions. These derived functions are never actually called, since the compare type parameters are phantom.

val compare_compare : compare -> compare -> int
val equal_compare : compare -> compare -> bool
val sexp_of_compare : compare -> Sexplib0.Sexp.t
val compare_of_sexp : Sexplib0.Sexp.t -> compare
val comparer : (t, compare) comparer
module Provide_of_sexp (_ : sig ... end) : sig ... end

Pretty-print

val pp_full : ?pre:(unit, Stdlib.Format.formatter, unit, unit) Stdlib.format4 -> ?suf:(unit, Stdlib.Format.formatter, unit, unit) Stdlib.format4 -> ?sep:(unit, Stdlib.Format.formatter, unit, unit) Stdlib.format4 -> (Stdlib.Format.formatter -> Llair__.LlairExp.Global.exp -> unit) -> Stdlib.Format.formatter -> t -> unit
module Provide_pp (_ : sig ... end) : sig ... end

Construct

val empty : t
val of_ : Llair__.LlairExp.Global.exp -> t
val of_option : Llair__.LlairExp.Global.exp option -> t
val of_list : Llair__.LlairExp.Global.exp list -> t
val add : Llair__.LlairExp.Global.exp -> t -> t
val add_option : Llair__.LlairExp.Global.exp option -> t -> t
val add_list : Llair__.LlairExp.Global.exp list -> t -> t
val remove : Llair__.LlairExp.Global.exp -> t -> t
val diff : t -> t -> t
val inter : t -> t -> t
val union : t -> t -> t
val diff_inter : t -> t -> t * t
val diff_inter_diff : t -> t -> t * t * t
val union_list : t list -> t

Query

val is_empty : t -> bool
val cardinal : t -> int
val mem : Llair__.LlairExp.Global.exp -> t -> bool
val subset : t -> of_:t -> bool
val disjoint : t -> t -> bool
val max_elt : t -> Llair__.LlairExp.Global.exp option
val only_elt : t -> Llair__.LlairExp.Global.exp option
val classify : t -> Llair__.LlairExp.Global.exp NS__.NS0.zero_one_many
val choose : t -> Llair__.LlairExp.Global.exp option

Find an unspecified element. Different elements may be chosen for equivalent sets. O(1).

val choose_exn : t -> Llair__.LlairExp.Global.exp

Find an unspecified element. Different elements may be chosen for equivalent sets. O(1).

val pop : t -> (Llair__.LlairExp.Global.exp * t) option

Find and remove an unspecified element. O(1).

val pop_exn : t -> Llair__.LlairExp.Global.exp * t

Find and remove an unspecified element. O(1).

val pop_min_elt_exn : t -> Llair__.LlairExp.Global.exp * t

Find and remove the minimum element. O(1).

val split : Llair__.LlairExp.Global.exp -> t -> t * bool * t
val find : Llair__.LlairExp.Global.exp -> t -> Llair__.LlairExp.Global.exp

Transform

val map : t -> f:(Llair__.LlairExp.Global.exp -> Llair__.LlairExp.Global.exp) -> t
val flat_map : t -> f:(Llair__.LlairExp.Global.exp -> t) -> t
val filter : t -> f:(Llair__.LlairExp.Global.exp -> bool) -> t
val filter_map : t -> f:(Llair__.LlairExp.Global.exp -> Llair__.LlairExp.Global.exp option) -> t

Map f over a set, removing any element e where f e = None.

val partition : t -> f:(Llair__.LlairExp.Global.exp -> bool) -> t * t

Traverse

val iter : t -> f:(Llair__.LlairExp.Global.exp -> unit) -> unit
val exists : t -> f:(Llair__.LlairExp.Global.exp -> bool) -> bool
val for_all : t -> f:(Llair__.LlairExp.Global.exp -> bool) -> bool
val fold : t -> 's -> f:(Llair__.LlairExp.Global.exp -> 's -> 's) -> 's
val reduce : t -> f: (Llair__.LlairExp.Global.exp -> Llair__.LlairExp.Global.exp -> Llair__.LlairExp.Global.exp) -> Llair__.LlairExp.Global.exp option
val fold_map : t -> 's -> f:(Llair__.LlairExp.Global.exp -> 's -> Llair__.LlairExp.Global.exp * 's) -> t * 's

Map f over a set while threading an accumulator through calls to f.

Convert

val to_list : t -> Llair__.LlairExp.Global.exp list
val to_iter : t -> (Llair__.LlairExp.Global.exp -> unit) -> unit
val of_iter : ((Llair__.LlairExp.Global.exp -> unit) -> unit) -> t
include sig ... end
include Sexplib0.Sexpable.S with type t := t
val t_of_sexp : Sexplib0__.Sexp.t -> t
val sexp_of_t : t -> Sexplib0__.Sexp.t
val pp : t NS.pp