`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 : ('a -> char -> 'a) -> 'a -> BatSubstring.t -> 'a val fold_lefti : ('a -> int -> char -> 'a) -> 'a -> BatSubstring.t -> 'a val fold_right : (char -> 'a -> 'a) -> BatSubstring.t -> 'a -> 'a val fold_righti : (int -> char -> 'a -> 'a) -> BatSubstring.t -> 'a -> '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 : 'a BatIO.output -> BatSubstring.t -> unit end`