source/data_structures/patriciaTreeSet.mli (47 lines of code) (raw):

(* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) module type ELEMENT = sig type t [@@deriving show] val equal : t -> t -> bool val compare : t -> t -> int val is_zero : t -> bool val add_one : t -> t val subtract_one : t -> t val bitwise_and : t -> t -> t val bitwise_xor : t -> t -> t val bitwise_not : t -> t end module type SET = sig type element type t val empty : t val is_empty : t -> bool val add : element -> t -> t val mem : element -> t -> bool val singleton : element -> t val remove : element -> t -> t val union : t -> t -> t val inter : t -> t -> t val diff : t -> t -> t val equal : t -> t -> bool val subset : t -> t -> bool val iter : (element -> unit) -> t -> unit val map : (element -> element) -> t -> t val fold : (element -> 'a -> 'a) -> t -> 'a -> 'a val for_all : (element -> bool) -> t -> bool val exists : (element -> bool) -> t -> bool val filter : (element -> bool) -> t -> t val cardinal : t -> int val elements : t -> element list val of_list : element list -> t end module Make (Element : ELEMENT) : sig include SET with type element = Element.t end module PatriciaTreeIntSet : sig include SET with type element = int end