Poly.Tree
type 'elt t = ('elt, Base.Comparator.Poly.comparator_witness) Tree.t
include Sexplib0.Sexpable.S1 with type 'elt t := 'elt t
val t_of_sexp : (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a t
val sexp_of_t : ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.t
val t_sexp_grammar :
'elt Sexplib0.Sexp_grammar.t ->
'elt t Sexplib0.Sexp_grammar.t
include Set_intf.Creators_generic
with type ('a, 'b) set := ('a, 'b) Tree.t
with type ('elt, 'cmp) t := 'elt t
with type ('elt, 'cmp) tree := 'elt t
with type 'c cmp := Base.Comparator.Poly.comparator_witness
with type 'a elt := 'a
with type ('a, 'b, 'c) create_options :=
('a, 'b, 'c) Base.Set.Without_comparator.t
include Base.Set.Creators_generic
with type ('a, 'b) set := ('a, 'b) Tree.t
with type ('elt, 'cmp) t := 'elt t
with type ('elt, 'cmp) tree := 'elt t
with type 'c cmp := Base.Comparator.Poly.comparator_witness
with type 'a elt := 'a
with type ('a, 'b, 'c) create_options :=
('a, 'b, 'c) Base.Set.Without_comparator.t
val empty : ('a, 'cmp, 'a t) Base.Set.Without_comparator.t
val singleton : ('a, 'cmp, 'a -> 'a t) Base.Set.Without_comparator.t
val union_list : ('a, 'cmp, 'a t list -> 'a t) Base.Set.Without_comparator.t
val of_list : ('a, 'cmp, 'a list -> 'a t) Base.Set.Without_comparator.t
val of_sequence :
('a, 'cmp, 'a Base.Sequence.t -> 'a t) Base.Set.Without_comparator.t
val of_array : ('a, 'cmp, 'a array -> 'a t) Base.Set.Without_comparator.t
val of_sorted_array :
('a, 'cmp, 'a array -> 'a t Base.Or_error.t) Base.Set.Without_comparator.t
val of_sorted_array_unchecked :
('a, 'cmp, 'a array -> 'a t) Base.Set.Without_comparator.t
val of_increasing_iterator_unchecked :
('a, 'cmp, len:int -> f:(int -> 'a) -> 'a t) Base.Set.Without_comparator.t
val stable_dedup_list :
('a, _, 'a list -> 'a list) Base.Set.Without_comparator.t
val map :
('b, 'cmp, ('a, _) Tree.t -> f:('a -> 'b) -> 'b t)
Base.Set.Without_comparator.t
The types of map
and filter_map
are subtle. The input set, ('a, _) set
, reflects the fact that these functions take a set of *any* type, with any comparator, while the output set, ('b, 'cmp) t
, reflects that the output set has the particular 'cmp
of the creation function. The comparator can come in one of three ways, depending on which set module is used
Set.map
-- comparator comes as an argumentSet.Poly.map
-- comparator is polymorphic comparisonFoo.Set.map
-- comparator is Foo.comparator
val filter_map :
('b, 'cmp, ('a, _) Tree.t -> f:('a -> 'b option) -> 'b t)
Base.Set.Without_comparator.t
val of_tree : ('a, 'cmp, 'a t -> 'a t) Base.Set.Without_comparator.t
val of_hash_set :
('a, 'cmp, 'a Hash_set.t -> 'a t) Base.Set.Without_comparator.t
val of_hashtbl_keys :
('a, 'cmp, ('a, _) Hashtbl.t -> 'a t) Base.Set.Without_comparator.t
val of_map_keys :
('a, _, Base.Comparator.Poly.comparator_witness) Base.Map.t ->
'a t
Never requires a comparator because it can get one from the input Map.t
.
val quickcheck_generator :
('a, 'cmp, 'a Quickcheck.Generator.t -> 'a t Quickcheck.Generator.t)
Base.Set.Without_comparator.t