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 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 head : string -> char option   val of_char : char -> string   val is_prefix : affix:string -> string -> bool   val is_suffix : affix:string -> string -> bool   val for_all : (char -> bool) -> string -> bool   val exists : (char -> bool) -> string -> bool   val with_index_range : ?first:int -> ?last:int -> string -> string   val span : sat:(char -> bool) -> string -> string * string   val take : sat:(char -> bool) -> string -> string   val drop : sat:(char -> bool) -> string -> string   val cut : ?rev:bool -> sep:string -> string -> (string * string) option   val cuts : ?rev:bool -> ?empty:bool -> sep:string -> string -> string list   val map : (char -> char) -> string -> string   val mapi : (int -> char -> char) -> string -> string   val pp : string B0.Fmt.t   val dump : string B0.Fmt.t   val uniquify : string list -> string list   val unique : exists:(string -> bool) -> string -> string B0.result   val edit_distance : string -> string -> int   val suggest : ?dist:int -> string list -> string -> string list   val parse_version : string -> (int * int * int * string option) option   val drop_initial_v : string -> string   type set   module Set :     sig       val empty : set       val is_empty : set -> bool       val mem : string -> set -> bool       val add : string -> set -> set       val singleton : string -> set       val remove : string -> set -> set       val union : set -> set -> set       val inter : set -> set -> set       val diff : set -> set -> set       val compare : set -> set -> int       val equal : set -> set -> bool       val subset : set -> set -> bool       val iter : (string -> unit) -> set -> unit       val fold : (string -> '-> 'a) -> set -> '-> 'a       val for_all : (string -> bool) -> set -> bool       val exists : (string -> bool) -> set -> bool       val filter : (string -> bool) -> set -> set       val partition : (string -> bool) -> set -> set * set       val cardinal : set -> int       val elements : set -> string list       val min_elt : set -> string       val max_elt : set -> string       val choose : set -> string       val split : string -> set -> set * bool * set       val find : string -> set -> string       val of_list : string list -> set       type t = B0.String.set       val pp :         ?sep:unit B0.Fmt.t -> string B0.Fmt.t -> B0.String.set B0.Fmt.t       val dump : B0.String.set B0.Fmt.t     end   type +'a map   module Map :     sig       val empty : 'a map       val is_empty : 'a map -> bool       val mem : string -> 'a map -> bool       val add : string -> '-> 'a map -> 'a map       val singleton : string -> '-> 'a map       val remove : string -> 'a map -> 'a map       val merge :         (string -> 'a option -> 'b option -> 'c option) ->         'a map -> 'b map -> 'c map       val union :         (string -> '-> '-> 'a option) -> 'a map -> 'a map -> 'a map       val compare : ('-> '-> int) -> 'a map -> 'a map -> int       val equal : ('-> '-> bool) -> 'a map -> 'a map -> bool       val iter : (string -> '-> unit) -> 'a map -> unit       val fold : (string -> '-> '-> 'b) -> 'a map -> '-> 'b       val for_all : (string -> '-> bool) -> 'a map -> bool       val exists : (string -> '-> bool) -> 'a map -> bool       val filter : (string -> '-> bool) -> 'a map -> 'a map       val partition : (string -> '-> bool) -> 'a map -> 'a map * 'a map       val cardinal : 'a map -> int       val bindings : 'a map -> (string * 'a) list       val min_binding : 'a map -> string * 'a       val max_binding : 'a map -> string * 'a       val choose : 'a map -> string * 'a       val split : string -> 'a map -> 'a map * 'a option * 'a map       val find : string -> 'a map -> 'a       val map : ('-> 'b) -> 'a map -> 'b map       val mapi : (string -> '-> 'b) -> 'a map -> 'b map       type 'a t = 'B0.String.map       val dom : 'B0.String.map -> B0.String.set       val of_list : (string * 'a) list -> 'B0.String.map       val pp :         ?sep:unit B0.Fmt.t ->         (string * 'a) B0.Fmt.t -> 'B0.String.map B0.Fmt.t       val dump : 'B0.Fmt.t -> 'B0.String.map B0.Fmt.t       val dump_string_map : string B0.String.map B0.Fmt.t     end end