sig   type t   val empty : unit -> BatSubstring.t   val to_string : BatSubstring.t -> string   val of_string : string -> BatSubstring.t   val make : int -> char -> BatSubstring.t   val create : int -> BatSubstring.t   val equal : BatSubstring.t -> BatSubstring.t -> bool   val of_input : BatIO.input -> BatSubstring.t   val substring : string -> int -> int -> BatSubstring.t   val unsafe_substring : string -> int -> int -> BatSubstring.t   val extract : string -> int -> int option -> BatSubstring.t   val all : string -> BatSubstring.t   val base : BatSubstring.t -> string * int * int   val is_empty : BatSubstring.t -> bool   val getc : BatSubstring.t -> (char * BatSubstring.t) option   val first : BatSubstring.t -> char option   val triml : int -> BatSubstring.t -> BatSubstring.t   val trimr : int -> BatSubstring.t -> BatSubstring.t   val get : BatSubstring.t -> int -> char   val size : BatSubstring.t -> int   val length : BatSubstring.t -> int   val slice : BatSubstring.t -> int -> int option -> BatSubstring.t   val concat : BatSubstring.t list -> string   val explode : BatSubstring.t -> char list   val is_prefix : string -> BatSubstring.t -> bool   val compare : BatSubstring.t -> BatSubstring.t -> int   val index : BatSubstring.t -> char -> int   val index_from : BatSubstring.t -> int -> char -> int   val rindex : BatSubstring.t -> char -> int   val rindex_from : BatSubstring.t -> int -> char -> int   val contains : BatSubstring.t -> char -> bool   val dropl : (char -> bool) -> BatSubstring.t -> BatSubstring.t   val dropr : (char -> bool) -> BatSubstring.t -> BatSubstring.t   val takel : (char -> bool) -> BatSubstring.t -> BatSubstring.t   val taker : (char -> bool) -> BatSubstring.t -> BatSubstring.t   val splitl :     (char -> bool) -> BatSubstring.t -> BatSubstring.t * BatSubstring.t   val splitr :     (char -> bool) -> BatSubstring.t -> BatSubstring.t * BatSubstring.t   val split_at : int -> BatSubstring.t -> BatSubstring.t * BatSubstring.t   val span : BatSubstring.t -> BatSubstring.t -> BatSubstring.t   val translate : (char -> char) -> BatSubstring.t -> string   val tokens : (char -> bool) -> BatSubstring.t -> BatSubstring.t list   val fields : (char -> bool) -> BatSubstring.t -> BatSubstring.t list   val fold_left : ('-> char -> 'a) -> '-> BatSubstring.t -> 'a   val fold_lefti : ('-> int -> char -> 'a) -> '-> BatSubstring.t -> 'a   val fold_right : (char -> '-> 'a) -> BatSubstring.t -> '-> 'a   val fold_righti : (int -> char -> '-> 'a) -> BatSubstring.t -> '-> 'a   val iter : (char -> unit) -> BatSubstring.t -> unit   val iteri : (int -> char -> unit) -> BatSubstring.t -> unit   val trim : BatSubstring.t -> BatSubstring.t   val split_on_char : char -> BatSubstring.t -> BatSubstring.t list   val split_on_pipe : BatSubstring.t -> BatSubstring.t list   val split_on_dot : BatSubstring.t -> BatSubstring.t list   val split_on_comma : BatSubstring.t -> BatSubstring.t list   val split_on_slash : BatSubstring.t -> BatSubstring.t list   val enum : BatSubstring.t -> char BatEnum.t   val print : 'BatIO.output -> BatSubstring.t -> unit end