Set.Using_comparatorUsing comparator is a similar interface as the toplevel of Set, except the functions take a ~comparator:('elt, 'cmp) Comparator.t where the functions at the toplevel of Set takes a ('elt, 'cmp) comparator.
type nonrec ('elt, 'cmp) t = ('elt, 'cmp) tval sexp_of_t : 
  ('elt -> Sexplib0.Sexp.t) ->
  ('cmp -> Sexplib0.Sexp.t) ->
  ('elt, 'cmp) t ->
  Sexplib0.Sexp.tval t_of_sexp_direct : 
  comparator:('elt, 'cmp) Comparator.t ->
  (Sexp.t -> 'elt) ->
  Sexp.t ->
  ('elt, 'cmp) tmodule Tree : sig ... endinclude Container.Generic
  with type ('a, 'b) t := ('a, 'b) t
  with type 'a elt := 'aval length : (_, _) t -> intval is_empty : (_, _) t -> boolval iter : ('a, _) t -> f:('a -> unit) -> unitval fold : ('a, _) t -> init:'acc -> f:('acc -> 'a -> 'acc) -> 'accval exists : ('a, _) t -> f:('a -> bool) -> boolval for_all : ('a, _) t -> f:('a -> bool) -> boolval count : ('a, _) t -> f:('a -> bool) -> intval sum : 
  (module Container.Summable with type t = 'sum) ->
  ('a, _) t ->
  f:('a -> 'sum) ->
  'sumval find : ('a, _) t -> f:('a -> bool) -> 'a optionval find_map : ('a, _) t -> f:('a -> 'b option) -> 'b optionval to_list : ('a, _) t -> 'a listval to_array : ('a, _) t -> 'a arrayval invariants : ('a, 'cmp) t -> boolval mem : ('a, 'cmp) t -> 'a -> booloverride Container's mem
val symmetric_diff : 
  ('a, 'cmp) t ->
  ('a, 'cmp) t ->
  ('a, 'a) Either.t Sequence.tmodule Named : sig ... endval fold_until : 
  ('a, _) t ->
  init:'acc ->
  f:('acc -> 'a -> ('acc, 'final) Container.Continue_or_stop.t) ->
  finish:('acc -> 'final) ->
  'finalval fold_right : ('a, _) t -> init:'acc -> f:('a -> 'acc -> 'acc) -> 'accval elements : ('a, _) t -> 'a listval min_elt : ('a, _) t -> 'a optionval min_elt_exn : ('a, _) t -> 'aval max_elt : ('a, _) t -> 'a optionval max_elt_exn : ('a, _) t -> 'aval choose : ('a, _) t -> 'a optionval choose_exn : ('a, _) t -> 'aval find_exn : ('a, _) t -> f:('a -> bool) -> 'aval nth : ('a, _) t -> int -> 'a optionval to_sequence : 
  ?order:[ `Increasing | `Decreasing ] ->
  ?greater_or_equal_to:'a ->
  ?less_or_equal_to:'a ->
  ('a, 'cmp) t ->
  'a Sequence.tval binary_search : 
  ('a, 'cmp) t ->
  compare:('a -> 'key -> int) ->
  Binary_searchable.Which_target_by_key.t ->
  'key ->
  'a optionval binary_search_segmented : 
  ('a, 'cmp) t ->
  segment_of:('a -> [ `Left | `Right ]) ->
  Binary_searchable.Which_target_by_segment.t ->
  'a optionval merge_to_sequence : 
  ?order:[ `Increasing | `Decreasing ] ->
  ?greater_or_equal_to:'a ->
  ?less_or_equal_to:'a ->
  ('a, 'cmp) t ->
  ('a, 'cmp) t ->
  ('a, 'a) Sequence.Merge_with_duplicates_element.t Sequence.tval empty : comparator:('a, 'cmp) Comparator.t -> ('a, 'cmp) tval singleton : comparator:('a, 'cmp) Comparator.t -> 'a -> ('a, 'cmp) tval union_list : 
  comparator:('a, 'cmp) Comparator.t ->
  ('a, 'cmp) t list ->
  ('a, 'cmp) tval of_list : comparator:('a, 'cmp) Comparator.t -> 'a list -> ('a, 'cmp) tval of_sequence : 
  comparator:('a, 'cmp) Comparator.t ->
  'a Sequence.t ->
  ('a, 'cmp) tval of_array : comparator:('a, 'cmp) Comparator.t -> 'a array -> ('a, 'cmp) tval of_sorted_array : 
  comparator:('a, 'cmp) Comparator.t ->
  'a array ->
  ('a, 'cmp) t Or_error.tval of_sorted_array_unchecked : 
  comparator:('a, 'cmp) Comparator.t ->
  'a array ->
  ('a, 'cmp) tval of_increasing_iterator_unchecked : 
  comparator:('a, 'cmp) Comparator.t ->
  len:int ->
  f:(int -> 'a) ->
  ('a, 'cmp) tval stable_dedup_list : comparator:('a, _) Comparator.t -> 'a list -> 'a listval map : 
  comparator:('b, 'cmp) Comparator.t ->
  ('a, _) t ->
  f:('a -> 'b) ->
  ('b, 'cmp) tThe 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.comparatorval filter_map : 
  comparator:('b, 'cmp) Comparator.t ->
  ('a, _) t ->
  f:('a -> 'b option) ->
  ('b, 'cmp) tval of_tree : 
  comparator:('a, 'cmp) Comparator.t ->
  ('a, 'cmp) Tree.t ->
  ('a, 'cmp) tval comparator_s : ('a, 'cmp) t -> ('a, 'cmp) Comparator.Module.tval comparator : ('a, 'cmp) t -> ('a, 'cmp) Comparator.tval hash_fold_direct : 'elt Hash.folder -> ('elt, 'cmp) t Hash.foldermodule Empty_without_value_restriction (Elt : Comparator.S1) : sig ... end