Module type Relude_Set.SET

module Comparable: { ... };
type value;
type t = Belt.Set.t(valueComparable.identity);
let empty: t;
let fromArray: array(value) => t;
let fromList: list(value) => t;
let isEmpty: t => bool;
let contains: value => t => bool;
let add: value => t => t;
let mergeMany: array(value) => t => t;
let remove: value => t => t;
let removeMany: array(value) => t => t;
let update: value => t => t;
let toggle: value => t => t;
let union: t => t => t;
let intersect: t => t => t;
let diff: t => t => t;
let subset: t => t => bool;
let compare: t => t => int;
let eq: t => t => bool;
let forEach: (value => unit) => t => unit;
let foldLeft: ('a => value => 'a) => 'a => t => 'a;
let foldRight: (value => 'a => 'a) => 'a => t => 'a;
let all: (value => bool) => t => bool;
let any: (value => bool) => t => bool;
let filter: (value => bool) => t => t;
let keep: (value => bool) => t => t;
let filterNot: (value => bool) => t => t;
let reject: (value => bool) => t => t;
let partition: (value => bool) => t => (t, t);
let length: t => int;
let toArray: t => array(value);
let toList: t => list(value);
let minimum: t => option(value);
let maximum: t => option(value);
let get: value => t => option(value);
let getOrElse: value => value => t => value;
let split: value => t => ((t, t), bool);