Base.Hash_setval sexp_of_t : ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.tWe use [@@deriving sexp_of] but not [@@deriving sexp] because we want people to be explicit about the hash and comparison functions used when creating hashtables. One can use Hash_set.Poly.t, which does have [@@deriving sexp], to use polymorphic comparison and hashing.
module Key = Hashtbl.Keymodule type Creators = sig ... endmodule type Creators_generic = sig ... endmodule type For_deriving = sig ... endtype nonrec ('key, 'z) create_options =
  ?growth_allowed:bool ->
  ?size:int ->
  'key Hashtbl.Key.t ->
  'zinclude Creators with type 'a t := 'a tval create : ?growth_allowed:bool -> ?size:int -> 'a Hashtbl.Key.t -> 'a tval of_list : 
  ?growth_allowed:bool ->
  ?size:int ->
  'a Hashtbl.Key.t ->
  'a list ->
  'a tmodule type Accessors = sig ... endinclude Accessors with type 'a t := 'a t with type 'a elt = 'ainclude Container.Generic with type ('a, _) t := 'a t with type 'a elt = 'aval length : _ t -> intval is_empty : _ t -> boolval fold_until : 
  'a t ->
  init:'acc ->
  f:('acc -> 'a elt -> ('acc, 'final) Container.Continue_or_stop.t) ->
  finish:('acc -> 'final) ->
  'finalval sum : 
  (module Container.Summable with type t = 'sum) ->
  'a t ->
  f:('a elt -> 'sum) ->
  'sumval mem : 'a t -> 'a -> booloverride Container.Generic.mem
val add : 'a t -> 'a -> unitval strict_add : 'a t -> 'a -> unit Or_error.tstrict_add t x returns Ok () if the x was not in t, or an Error if it was.
val strict_add_exn : 'a t -> 'a -> unitval remove : 'a t -> 'a -> unitval strict_remove : 'a t -> 'a -> unit Or_error.tstrict_remove t x returns Ok () if the x was in t, or an Error if it was not.
val strict_remove_exn : 'a t -> 'a -> unitval clear : 'a t -> unitval filter_inplace : 'a t -> f:('a -> bool) -> unitinter t1 t2 computes the set intersection of t1 and t2. Runs in O(min(length t1, length t2)). Behavior is undefined if t1 and t2 don't have the same equality function.
module Poly : sig ... endA hash set that uses polymorphic comparison
include For_deriving with type 'a t := 'a tmodule type M_of_sexp = sig ... endmodule type Sexp_of_m = sig ... endmodule type Equal_m = sig ... endM is meant to be used in combination with OCaml applicative functor types:
val m__t_sexp_grammar : 
  (module Base__.Hash_set_intf.M_sexp_grammar with type t = 'elt) ->
  'elt t Sexplib0.Sexp_grammar.t