adamc@821: type t = string
adamc@821: 
adamc@1023: val str : char -> t
adamc@1023: 
adamc@828: val length : t -> int
adam@1388: val lengthGe : t -> int -> bool
adamc@828: 
adamc@828: val append : t -> t -> t
adamc@828: 
adamc@821: val sub : t -> int -> char
adamc@821: val suffix : t -> int -> string
adamc@829: 
adamc@829: val index : t -> char -> option int
adam@1390: val sindex : {Haystack : t, Needle : t} -> option int
adamc@829: val atFirst : t -> char -> option string
adamc@829: 
adamc@831: val mindex : {Haystack : t, Needle : t} -> option int
adamc@831: 
adamc@829: val substring : t -> {Start : int, Len : int} -> string
adamc@829: 
adam@1389: val seek : t -> char -> option string
adam@1389: val mseek : {Haystack : t, Needle : t} -> option (char * string)
adam@1389: 
adamc@829: val split : t -> char -> option (string * string)
adam@1389: val split' : t -> char -> option (string * string) (* The matched character is kept at the beginning of the suffix. *)
adamc@831: val msplit : {Haystack : t, Needle : t} -> option (string * char * string)
adamc@1057: 
adam@1390: val ssplit : {Haystack : t, Needle : t} -> option (string * string)
adam@1390: 
adamc@1057: val all : (char -> bool) -> string -> bool
adamc@1131: val mp : (char -> char) -> string -> string
adamc@1122: 
adamc@1122: val newlines : ctx ::: {Unit} -> [[Body] ~ ctx] => string -> xml ([Body] ++ ctx) [] []
adamc@1174: 
adamc@1174: val isPrefix : {Full : t, Prefix : t} -> bool
adam@2021: 
adam@2021: val trim : t -> t