Module type Base.Set_intf.Creators_and_accessors_generic

include Accessors_generic
include Container.Generic_phantom
type ('a, 'phantom) t
type 'a elt
val length : (__t ‑> int
val is_empty : (__t ‑> bool
val iter : ('a_t ‑> f:('a elt ‑> unit) ‑> unit
val fold : ('a_t ‑> init:'accum ‑> f:('accum ‑> 'a elt ‑> 'accum) ‑> 'accum
val fold_result : ('a_t ‑> init:'accum ‑> f:('accum ‑> 'a elt ‑> ('accum'eResult.t) ‑> ('accum'eResult.t
val fold_until : ('a_t ‑> init:'accum ‑> f:('accum ‑> 'a elt ‑> ('accum'stopContainer_intf.Continue_or_stop.t) ‑> ('accum'stopContainer_intf.Finished_or_stopped_early.t
val exists : ('a_t ‑> f:('a elt ‑> bool) ‑> bool
val for_all : ('a_t ‑> f:('a elt ‑> bool) ‑> bool
val count : ('a_t ‑> f:('a elt ‑> bool) ‑> int
val sum : (module Commutative_group.S with type t = 'sum) ‑> ('a_t ‑> f:('a elt ‑> 'sum) ‑> 'sum
val find : ('a_t ‑> f:('a elt ‑> bool) ‑> 'a elt option
val find_map : ('a_t ‑> f:('a elt ‑> 'b option) ‑> 'b option
val to_list : ('a_t ‑> 'a elt list
val to_array : ('a_t ‑> 'a elt array
val min_elt : ('a_t ‑> cmp:('a elt ‑> 'a elt ‑> int) ‑> 'a elt option
val max_elt : ('a_t ‑> cmp:('a elt ‑> 'a elt ‑> int) ‑> 'a elt option
type ('a, 'cmp) tree
type ('a, 'cmp, 'z) options

The options type is used to make Accessors_generic flexible as to whether a comparator is required to be passed to certain functions.

type 'cmp cmp
val invariants : ('a'cmp, ('a'cmpt ‑> bool) options
val mem : ('a'cmp, ('a'cmpt ‑> 'a elt ‑> bool) options

override Container's mem

val add : ('a'cmp, ('a'cmpt ‑> 'a elt ‑> ('a'cmptoptions
val remove : ('a'cmp, ('a'cmpt ‑> 'a elt ‑> ('a'cmptoptions
val union : ('a'cmp, ('a'cmpt ‑> ('a'cmpt ‑> ('a'cmptoptions
val inter : ('a'cmp, ('a'cmpt ‑> ('a'cmpt ‑> ('a'cmptoptions
val diff : ('a'cmp, ('a'cmpt ‑> ('a'cmpt ‑> ('a'cmptoptions
val symmetric_diff : ('a'cmp, ('a'cmpt ‑> ('a'cmpt ‑> ('a elt'a eltEither.t Sequence.toptions
val compare_direct : ('a'cmp, ('a'cmpt ‑> ('a'cmpt ‑> int) options
val equal : ('a'cmp, ('a'cmpt ‑> ('a'cmpt ‑> bool) options
val is_subset : ('a'cmp, ('a'cmpt ‑> of_:('a'cmpt ‑> bool) options
val subset : ('a'cmp, ('a'cmpt ‑> ('a'cmpt ‑> bool) options
val fold_until : ('a_t ‑> init:'b ‑> f:('b ‑> 'a elt ‑> ('b'stopContinue_or_stop.t) ‑> ('b'stopFinished_or_stopped_early.t
val fold_right : ('a_t ‑> init:'b ‑> f:('a elt ‑> 'b ‑> 'b) ‑> 'b
val iter2 : ('a'cmp, ('a'cmpt ‑> ('a'cmpt ‑> f:([ `Left of 'a elt | `Right of 'a elt | `Both of 'a elt * 'a elt ] ‑> unit) ‑> unit) options
val filter : ('a'cmp, ('a'cmpt ‑> f:('a elt ‑> bool) ‑> ('a'cmptoptions
val partition_tf : ('a'cmp, ('a'cmpt ‑> f:('a elt ‑> bool) ‑> ('a'cmpt * ('a'cmptoptions
val elements : ('a_t ‑> 'a elt list
val min_elt : ('a_t ‑> 'a elt option
val min_elt_exn : ('a_t ‑> 'a elt
val max_elt : ('a_t ‑> 'a elt option
val max_elt_exn : ('a_t ‑> 'a elt
val choose : ('a_t ‑> 'a elt option
val choose_exn : ('a_t ‑> 'a elt
val split : ('a'cmp, ('a'cmpt ‑> 'a elt ‑> ('a'cmpt * 'a elt option * ('a'cmptoptions
val group_by : ('a'cmp, ('a'cmpt ‑> equiv:('a elt ‑> 'a elt ‑> bool) ‑> ('a'cmpt list) options
val find_exn : ('a_t ‑> f:('a elt ‑> bool) ‑> 'a elt
val find_index : ('a_t ‑> int ‑> 'a elt option
val nth : ('a_t ‑> int ‑> 'a elt option
val remove_index : ('a'cmp, ('a'cmpt ‑> int ‑> ('a'cmptoptions
val to_tree : ('a'cmpt ‑> ('a elt'cmptree
val to_sequence : ('a'cmp, ?order:[ `Increasing | `Decreasing ] ‑> ?greater_or_equal_to:'a elt ‑> ?less_or_equal_to:'a elt ‑> ('a'cmpt ‑> 'a elt Sequence.toptions
val merge_to_sequence : ('a'cmp, ?order:[ `Increasing | `Decreasing ] ‑> ?greater_or_equal_to:'a elt ‑> ?less_or_equal_to:'a elt ‑> ('a'cmpt ‑> ('a'cmpt ‑> ('a elt'a eltMerge_to_sequence_element.t Sequence.toptions
include Creators_generic with type (a, b, c) options := (a, b, c) options with type (a, b) t := (a, b) t with type (a, b) tree := (a, b) tree with type elt := a elt with type cmp cmp := cmp cmp
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 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