Module type Set.Creators_generic
type ('a, 'cmp) ttype ('a, 'cmp) settype ('a, 'cmp) treetype 'a elttype ('a, 'cmp, 'z) optionstype 'cmp cmp
val empty : ('a, 'cmp, ('a, 'cmp) t) optionsval singleton : ('a, 'cmp, 'a elt -> ('a, 'cmp) t) optionsval union_list : ('a, 'cmp, ('a, 'cmp) t list -> ('a, 'cmp) t) optionsval of_list : ('a, 'cmp, 'a elt list -> ('a, 'cmp) t) optionsval of_array : ('a, 'cmp, 'a elt array -> ('a, 'cmp) t) optionsval of_sorted_array : ('a, 'cmp, 'a elt array -> ('a, 'cmp) t Base__.Or_error.t) optionsval of_sorted_array_unchecked : ('a, 'cmp, 'a elt array -> ('a, 'cmp) t) optionsval of_increasing_iterator_unchecked : ('a, 'cmp, len:int -> f:(int -> 'a elt) -> ('a, 'cmp) t) optionsval stable_dedup_list : ('a, _, 'a elt list -> 'a elt list) optionsval map : ('b, 'cmp, ('a, _) set -> f:('a -> 'b elt) -> ('b, 'cmp) t) optionsThe types of
mapandfilter_mapare 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'cmpof 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