Module Misc
val fatal_error : string -> 'a
exception Fatal_error
val try_finally : unit -> 'a -> unit -> unit -> 'a
val map_end : 'a -> 'b -> 'a list -> 'b list -> 'b list
val map_left_right : 'a -> 'b -> 'a list -> 'b list
val for_all2 : 'a -> 'b -> bool -> 'a list -> 'b list -> bool
val replicate_list : 'a -> int -> 'a list
val list_remove : 'a -> 'a list -> 'a list
val split_last : 'a list -> ('a list * 'a)
val samelist : 'a -> 'a -> bool -> 'a list -> 'a list -> bool
val may : 'a -> unit -> 'a option -> unit
val may_map : 'a -> 'b -> 'a option -> 'b option
val find_in_path : string list -> string -> string
val find_in_path_uncap : string list -> string -> string
val remove_file : string -> unit
val expand_directory : string -> string -> string
val log2 : int -> int
val align : int -> int -> int
val no_overflow_add : int -> int -> bool
val no_overflow_sub : int -> int -> bool
val no_overflow_lsl : int -> bool
val chop_extension_if_any : string -> string
val chop_extensions : string -> string
val search_substring : string -> string -> int -> int
val rev_split_words : string -> string list
val fst3 : ('a * 'b * 'c) -> 'a
val snd3 : ('a * 'b * 'c) -> 'b
val thd3 : ('a * 'b * 'c) -> 'c
val fst4 : ('a * 'b * 'c * 'd) -> 'a
val snd4 : ('a * 'b * 'c * 'd) -> 'b
val thd4 : ('a * 'b * 'c * 'd) -> 'c
val for4 : ('a * 'b * 'c * 'd) -> 'd
module LongString : sig
type t = bytes array
val create : int -> t
val length : t -> int
val get : t -> int -> char
val set : t -> int -> char -> unit
val blit : t -> int -> t -> int -> int -> unit
val unsafe_blit_to_bytes : t -> int -> bytes -> int -> int -> unit
end
val edit_distance : string -> string -> int -> int option
val split : string -> char -> string list
val cut_at : string -> char -> (string * string)