Module type Core_kernel__.Core_set_intf.Creators_generic

include Set_intf.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'cmptoptions
val singleton : ('a'cmp'a elt ‑> ('a'cmptoptions
val union_list : ('a'cmp, ('a'cmpt list ‑> ('a'cmptoptions
val of_list : ('a'cmp'a elt list ‑> ('a'cmptoptions
val of_array : ('a'cmp'a elt array ‑> ('a'cmptoptions
val of_sorted_array : ('a'cmp'a elt array ‑> ('a'cmpt Base.Or_error.toptions
val of_sorted_array_unchecked : ('a'cmp'a elt array ‑> ('a'cmptoptions
val of_increasing_iterator_unchecked : ('a'cmp, len:int ‑> f:(int ‑> 'a elt) ‑> ('a'cmptoptions
val stable_dedup_list : ('a_'a elt list ‑> 'a elt list) options
val map : ('b'cmp, ('a_set ‑> f:('a ‑> 'b elt) ‑> ('b'cmptoptions

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 argument
  • Set.Poly.map -- comparator is polymorphic comparison
  • Foo.Set.map -- comparator is Foo.comparator
val filter_map : ('b'cmp, ('a_set ‑> f:('a ‑> 'b elt option) ‑> ('b'cmptoptions
val of_tree : ('a'cmp, ('a elt'cmptree ‑> ('a'cmptoptions
val of_hash_set : ('a'cmp'a elt Core_kernel.Hash_set.t ‑> ('a'cmptoptions
val of_hashtbl_keys : ('a'cmp, ('a elt_Core_kernel__.Core_hashtbl.t ‑> ('a'cmptoptions
val of_map_keys : ('a elt_'cmp cmpMap.t ‑> ('a'cmpt

never requires a comparator because it can get one from the input Map.t

val gen : ('a'cmp'a elt Core_kernel.Quickcheck.Generator.t ‑> ('a'cmpt Core_kernel.Quickcheck.Generator.toptions