Module type Base__Set.Creators_generic
type ('a, 'cmp) t
type ('a, 'cmp) set
type ('a, 'cmp) tree
type 'a elt
type ('a, 'cmp, 'z) options
type 'cmp cmp
val empty : ('a, 'cmp, ('a, 'cmp) t) options
val singleton : ('a, 'cmp, 'a elt -> ('a, 'cmp) t) options
val union_list : ('a, 'cmp, ('a, 'cmp) t list -> ('a, 'cmp) t) options
val of_list : ('a, 'cmp, 'a elt list -> ('a, 'cmp) t) options
val of_array : ('a, 'cmp, 'a elt array -> ('a, 'cmp) t) options
val of_sorted_array : ('a, 'cmp, 'a elt array -> ('a, 'cmp) t Base.Or_error.t) options
val of_sorted_array_unchecked : ('a, 'cmp, 'a elt array -> ('a, 'cmp) t) options
val of_increasing_iterator_unchecked : ('a, 'cmp, len:int -> f:(int -> 'a elt) -> ('a, 'cmp) t) options
val stable_dedup_list : ('a, _, 'a elt list -> 'a elt list) options
val map : ('b, 'cmp, ('a, _) set -> f:('a -> 'b elt) -> ('b, 'cmp) t) options
The types of
map
andfilter_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 usedSet.map
-- comparator comes as an argumentSet.Poly.map
-- comparator is polymorphic comparisonFoo.Set.map
-- comparator isFoo.comparator