sig   external length : string -> int = "%string_length"   external get : string -> int -> char = "%string_safe_get"   external set : bytes -> int -> char -> unit = "%string_safe_set"   external create : int -> bytes = "caml_create_string"   val make : int -> char -> string   val init : int -> (int -> char) -> string   val copy : string -> string   val sub : string -> int -> int -> string   val fill : bytes -> int -> int -> char -> unit   val blit : string -> int -> bytes -> int -> int -> unit   val concat : string -> string list -> string   val iter : (char -> unit) -> string -> unit   val iteri : (int -> char -> unit) -> string -> unit   val map : (char -> char) -> string -> string   val mapi : (int -> char -> char) -> string -> string   val trim : string -> string   val escaped : string -> string   val index : string -> char -> int   val rindex : string -> char -> int   val index_from : string -> int -> char -> int   val rindex_from : string -> int -> char -> int   val contains : string -> char -> bool   val contains_from : string -> int -> char -> bool   val rcontains_from : string -> int -> char -> bool   val uppercase : string -> string   val lowercase : string -> string   val capitalize : string -> string   val uncapitalize : string -> string   val uppercase_ascii : string -> string   val lowercase_ascii : string -> string   val capitalize_ascii : string -> string   val uncapitalize_ascii : string -> string   type t = string   val compare : t -> t -> int   val equal : t -> t -> bool   external unsafe_get : string -> int -> char = "%string_unsafe_get"   external unsafe_set : bytes -> int -> char -> unit = "%string_unsafe_set"   external unsafe_blit : string -> int -> bytes -> int -> int -> unit     = "caml_blit_string" [@@noalloc]   external unsafe_fill : bytes -> int -> int -> char -> unit     = "caml_fill_string" [@@noalloc]   val cut : sep:char -> string -> (string * string) option   val rev_cut : sep:char -> string -> (string * string) option   val rev_cuts : sep:char -> string -> string list   val edit_distance : string -> string -> int   val suggest : ?dist:int -> string list -> string -> string list   module Set :     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) -> t -> '-> '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       val find : elt -> t -> elt       val of_list : elt list -> t     end   module Map :     sig       type key = string       type +'a t       val empty : 'a t       val is_empty : 'a t -> bool       val mem : key -> 'a t -> bool       val add : key -> '-> 'a t -> 'a t       val singleton : key -> '-> 'a t       val remove : key -> 'a t -> 'a t       val merge :         (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t       val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t       val compare : ('-> '-> int) -> 'a t -> 'a t -> int       val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool       val iter : (key -> '-> unit) -> 'a t -> unit       val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b       val for_all : (key -> '-> bool) -> 'a t -> bool       val exists : (key -> '-> bool) -> 'a t -> bool       val filter : (key -> '-> bool) -> 'a t -> 'a t       val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t       val cardinal : 'a t -> int       val bindings : 'a t -> (key * 'a) list       val min_binding : 'a t -> key * 'a       val max_binding : 'a t -> key * 'a       val choose : 'a t -> key * 'a       val split : key -> 'a t -> 'a t * 'a option * 'a t       val find : key -> 'a t -> 'a       val map : ('-> 'b) -> 'a t -> 'b t       val mapi : (key -> '-> 'b) -> 'a t -> 'b t     end end