|
|
|
(*
|
|
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
*)
|
|
|
|
|
|
|
|
val open_in : string -> in_channel
|
|
|
|
|
|
|
|
val open_out : string -> out_channel
|
|
|
|
|
|
|
|
val string_starts_with : string -> string -> bool
|
|
|
|
|
|
|
|
val string_ends_with : string -> string -> bool
|
|
|
|
|
|
|
|
val string_split : char -> string -> string list
|
|
|
|
|
|
|
|
val string_join : char -> string list -> string
|
|
|
|
|
|
|
|
val list_starts_with : 'a list -> 'a list -> bool
|
|
|
|
|
|
|
|
val list_ends_with : 'a list -> 'a list -> bool
|
|
|
|
|
|
|
|
val make_cached : ('a -> 'b) -> 'a -> 'b
|
|
|
|
|
|
|
|
val line_stream_of_channel : in_channel -> string Stream.t
|
|
|
|
|
|
|
|
val stream_concat : 'a Stream.t Stream.t -> 'a Stream.t
|
|
|
|
|
|
|
|
val stream_append : 'a Stream.t -> 'a Stream.t -> 'a Stream.t
|
|
|
|
|
|
|
|
val stream_map : ('a -> 'b) -> 'a Stream.t -> 'b Stream.t
|
|
|
|
|
|
|
|
val stream_filter : ('a -> bool) -> 'a Stream.t -> 'a Stream.t
|
|
|
|
|
|
|
|
val stream_fold : ('a -> 'b -> 'b) -> 'b -> 'a Stream.t -> 'b
|
|
|
|
|
|
|
|
val stream_to_list : 'a Stream.t -> 'a list
|
|
|
|
|
|
|
|
val assert_true : string -> bool -> unit
|
|
|
|
|
|
|
|
val assert_false : string -> bool -> unit
|
|
|
|
|
|
|
|
val assert_equal : string -> 'a -> 'a -> unit
|
|
|
|
|
|
|
|
module DisjointSet : sig
|
|
|
|
type 'a t
|
|
|
|
|
|
|
|
val create : unit -> 'a t
|
|
|
|
|
|
|
|
val find : 'a t -> 'a -> 'a
|
|
|
|
|
|
|
|
val union : 'a t -> 'a -> 'a -> unit
|
|
|
|
|
|
|
|
val iter : 'a t -> ('a -> 'a -> unit) -> unit
|
|
|
|
end
|
|
|
|
|
|
|
|
val fix_arg_spec :
|
|
|
|
(Arg.key * Arg.spec * Arg.doc) list -> Arg.usage_msg -> (Arg.key * Arg.spec * Arg.doc) list
|