sig   type 'a t   external length : 'BatString.Cap.t -> int = "%string_length"   val is_empty : 'BatString.Cap.t -> bool   external get : [> `Read ] BatString.Cap.t -> int -> char     = "%string_safe_get"   external set : [> `Write ] BatString.Cap.t -> int -> char -> unit     = "%string_safe_set"   external create : int -> 'BatString.Cap.t = "caml_create_string"   external of_string : string -> 'BatString.Cap.t = "%identity"   external to_string : [ `Read | `Write ] BatString.Cap.t -> string     = "%identity"   external read_only :     [> `Read ] BatString.Cap.t -> [ `Read ] BatString.Cap.t = "%identity"   external write_only :     [> `Write ] BatString.Cap.t -> [ `Write ] BatString.Cap.t = "%identity"   val make : int -> char -> 'BatString.Cap.t   val init : int -> (int -> char) -> 'BatString.Cap.t   val enum : [> `Read ] BatString.Cap.t -> char BatEnum.t   val of_enum : char BatEnum.t -> 'BatString.Cap.t   val backwards : [> `Read ] BatString.Cap.t -> char BatEnum.t   val of_backwards : char BatEnum.t -> 'BatString.Cap.t   val of_list : char list -> 'BatString.Cap.t   val to_list : [> `Read ] BatString.Cap.t -> char list   val of_int : int -> 'BatString.Cap.t   val of_float : float -> 'BatString.Cap.t   val of_char : char -> 'BatString.Cap.t   val to_int : [> `Read ] BatString.Cap.t -> int   val to_float : [> `Read ] BatString.Cap.t -> float   val map :     (char -> char) -> [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val mapi :     (int -> char -> char) -> [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val fold_left :     ('-> char -> 'a) -> '-> [> `Read ] BatString.Cap.t -> 'a   val fold_lefti :     ('-> int -> char -> 'a) -> '-> [> `Read ] BatString.Cap.t -> 'a   val fold_right :     (char -> '-> 'a) -> [> `Read ] BatString.Cap.t -> '-> 'a   val fold_righti :     (int -> char -> '-> 'a) -> [> `Read ] BatString.Cap.t -> '-> 'a   val filter :     (char -> bool) -> [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val filter_map :     (char -> char option) -> [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val iter : (char -> unit) -> [> `Read ] BatString.Cap.t -> unit   val index : [> `Read ] BatString.Cap.t -> char -> int   val rindex : [> `Read ] BatString.Cap.t -> char -> int   val index_from : [> `Read ] BatString.Cap.t -> int -> char -> int   val rindex_from : [> `Read ] BatString.Cap.t -> int -> char -> int   val contains : [> `Read ] BatString.Cap.t -> char -> bool   val contains_from : [> `Read ] BatString.Cap.t -> int -> char -> bool   val rcontains_from : [> `Read ] BatString.Cap.t -> int -> char -> bool   val find : [> `Read ] BatString.Cap.t -> [> `Read ] BatString.Cap.t -> int   val find_from :     [> `Read ] BatString.Cap.t -> int -> [> `Read ] BatString.Cap.t -> int   val rfind : [> `Read ] BatString.Cap.t -> [> `Read ] BatString.Cap.t -> int   val rfind_from :     [> `Read ] BatString.Cap.t -> int -> [> `Read ] BatString.Cap.t -> int   val ends_with :     [> `Read ] BatString.Cap.t -> [> `Read ] BatString.Cap.t -> bool   val starts_with :     [> `Read ] BatString.Cap.t -> [> `Read ] BatString.Cap.t -> bool   val exists :     [> `Read ] BatString.Cap.t -> [> `Read ] BatString.Cap.t -> bool   val lchop : ?n:int -> [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val rchop : ?n:int -> [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val trim : [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val quote : [> `Read ] BatString.Cap.t -> string   val left : [> `Read ] BatString.Cap.t -> int -> 'BatString.Cap.t   val right : [> `Read ] BatString.Cap.t -> int -> 'BatString.Cap.t   val head : [> `Read ] BatString.Cap.t -> int -> 'BatString.Cap.t   val tail : [> `Read ] BatString.Cap.t -> int -> 'BatString.Cap.t   val strip :     ?chars:[> `Read ] BatString.Cap.t ->     [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val uppercase : [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val lowercase : [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val capitalize : [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val uncapitalize : [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val copy : [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val sub : [> `Read ] BatString.Cap.t -> int -> int -> 'BatString.Cap.t   val fill : [> `Write ] BatString.Cap.t -> int -> int -> char -> unit   val blit :     [> `Read ] BatString.Cap.t ->     int -> [> `Write ] BatString.Cap.t -> int -> int -> unit   val concat :     [> `Read ] BatString.Cap.t ->     [> `Read ] BatString.Cap.t list -> 'BatString.Cap.t   val escaped : [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val replace_chars :     (char -> [> `Read ] BatString.Cap.t) ->     [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val replace :     str:[> `Read ] BatString.Cap.t ->     sub:[> `Read ] BatString.Cap.t ->     by:[> `Read ] BatString.Cap.t -> bool * 'BatString.Cap.t   val nreplace :     str:[> `Read ] BatString.Cap.t ->     sub:[> `Read ] BatString.Cap.t ->     by:[> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val repeat : [> `Read ] BatString.Cap.t -> int -> 'BatString.Cap.t   val split :     [> `Read ] BatString.Cap.t ->     by:[> `Read ] BatString.Cap.t -> 'BatString.Cap.t * 'BatString.Cap.t   val rsplit : [> `Read ] BatString.Cap.t -> by:string -> string * string   val nsplit :     [> `Read ] BatString.Cap.t ->     by:[> `Read ] BatString.Cap.t -> 'BatString.Cap.t list   val splice :     [ `Read | `Write ] BatString.Cap.t ->     int -> int -> [> `Read ] BatString.Cap.t -> string   val join :     [> `Read ] BatString.Cap.t ->     [> `Read ] BatString.Cap.t list -> 'BatString.Cap.t   val slice :     ?first:int ->     ?last:int -> [> `Read ] BatString.Cap.t -> 'BatString.Cap.t   val explode : [> `Read ] BatString.Cap.t -> char list   val implode : char list -> 'BatString.Cap.t   val compare :     [> `Read ] BatString.Cap.t -> [> `Read ] BatString.Cap.t -> int   val icompare :     [> `Read ] BatString.Cap.t -> [> `Read ] BatString.Cap.t -> int   val print : 'BatInnerIO.output -> [> `Read ] BatString.Cap.t -> unit   val println : 'BatInnerIO.output -> [> `Read ] BatString.Cap.t -> unit   val print_quoted :     'BatInnerIO.output -> [> `Read ] BatString.Cap.t -> unit   external unsafe_get : [> `Read ] BatString.Cap.t -> int -> char     = "%string_unsafe_get"   external unsafe_set : [> `Write ] BatString.Cap.t -> int -> char -> unit     = "%string_unsafe_set"   external unsafe_blit :     [> `Read ] BatString.Cap.t ->     int -> [> `Write ] BatString.Cap.t -> int -> int -> unit     = "caml_blit_string" [@@noalloc]   external unsafe_fill :     [> `Write ] BatString.Cap.t -> int -> int -> char -> unit     = "caml_fill_string" [@@noalloc]   module Exceptionless :     sig       val to_int : [> `Read ] BatString.Cap.t -> int option       val to_float : [> `Read ] BatString.Cap.t -> float option       val index : [> `Read ] BatString.Cap.t -> char -> int option       val rindex : [> `Read ] BatString.Cap.t -> char -> int option       val index_from :         [> `Read ] BatString.Cap.t -> int -> char -> int option       val rindex_from :         [> `Read ] BatString.Cap.t -> int -> char -> int option       val find :         [> `Read ] BatString.Cap.t ->         [> `Read ] BatString.Cap.t -> int option       val find_from :         [> `Read ] BatString.Cap.t ->         int -> [> `Read ] BatString.Cap.t -> int option       val rfind :         [> `Read ] BatString.Cap.t ->         [> `Read ] BatString.Cap.t -> int option       val rfind_from :         [> `Read ] BatString.Cap.t ->         int -> [> `Read ] BatString.Cap.t -> int option       val split :         [> `Read ] BatString.Cap.t ->         by:[> `Read ] BatString.Cap.t ->         ('BatString.Cap.t * 'BatString.Cap.t) option       val rsplit :         [> `Read ] BatString.Cap.t ->         by:[> `Read ] BatString.Cap.t ->         ('BatString.Cap.t * 'BatString.Cap.t) option     end end