sig
module Duplicate :
functor (S : Set.S) ->
sig
type dups = No_dups of S.t | Has_dups of S.elt
val duplicates : S.elt list -> Util.Duplicate.dups
end
val remove_duplicates : 'a list -> 'a list
val remove_duplicates_gen : ('a -> 'a -> bool) -> 'a list -> 'a list
val get_duplicates : 'a list -> 'a list
val get_duplicates_gen : ('a -> 'a -> bool) -> 'a list -> 'a list
val option_map : ('a -> 'b) -> 'a option -> 'b option
val option_cases : 'a option -> ('a -> 'b) -> (unit -> 'b) -> 'b
val option_bind : ('a -> 'b option) -> 'a option -> 'b option
val option_default : 'a -> 'a option -> 'a
val option_default_map : 'a option -> 'b -> ('a -> 'b) -> 'b
val option_get_exn : exn -> 'a option -> 'a
val changed2 :
('a -> 'b -> 'c) ->
('a -> 'a option) -> 'a -> ('b -> 'b option) -> 'b -> 'c option
val list_index : ('a -> bool) -> 'a list -> int option
val list_subset : 'a list -> 'a list -> bool
val list_diff : 'a list -> 'a list -> 'a list
val list_longer : int -> 'a list -> bool
val list_null : 'a list -> bool
val option_first : ('a -> 'b option) -> 'a list -> 'b option
val map_changed : ('a -> 'a option) -> 'a list -> 'a list option
val map_changed_default :
('a -> 'b) -> ('a -> 'b option) -> 'a list -> 'b list option
val list_mapi : (int -> 'a -> 'b) -> 'a list -> 'b list
val list_iter_sep : (unit -> unit) -> ('a -> unit) -> 'a list -> unit
val intercalate : 'a -> 'a list -> 'a list
val interleave : 'a list -> 'a list -> 'a list
val replicate : int -> 'a -> 'a list
val map_filter : ('a -> 'b option) -> 'a list -> 'b list
val map_all : ('a -> 'b option) -> 'a list -> 'b list option
val list_to_front : int -> 'a list -> 'a list
val undo_list_to_front : int -> 'a list -> 'a list
val split_after : int -> 'a list -> 'a list * 'a list
val list_firstn : int -> 'a list -> 'a list
val list_dropn : int -> 'a list -> 'a list
val list_dest_snoc : 'a list -> 'a list * 'a
val list_pick : ('a -> bool) -> 'a list -> ('a * 'a list) option
val compare_list : ('a -> 'b -> int) -> 'a list -> 'b list -> int
val copy_file : string -> string -> unit
val move_file : string -> string -> unit
val same_content_files : string -> string -> bool
val absolute_dir : string -> string option
val dir_eq : string -> string -> bool
val string_to_list : string -> char list
val string_for_all : (char -> bool) -> string -> bool
val is_simple_ident_string : string -> bool
val string_split : char -> string -> string list * string
val uncapitalize_prefix : string -> string
val string_map : (char -> char) -> string -> string
val message_singular_plural : string * string -> 'a list -> string
val fresh_string : string list -> string -> string
module StringSet :
sig
type elt = string
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
end
module IntSet :
sig
type elt = int
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
end
module IntIntSet :
sig
type elt = int * int
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
end
module ExtraSet :
functor (S : Set.S) ->
sig
val add_list : S.t -> S.elt list -> S.t
val remove_list : S.t -> S.elt list -> S.t
val from_list : S.elt list -> S.t
val list_union : S.t list -> S.t
val list_inter : S.t list -> S.t
end
end