sig   type t = string * int * int   val empty : string * int * int   val is_empty : 'a * 'b * int -> bool   val get : string * int * 'a -> int -> char   val length : 'a * 'b * 'c -> 'c   val sub : 'a * int * 'b -> int -> 'c -> 'a * int * 'c   val extend : 'a * 'b * int -> 'a * 'b * int end