sig type 'a elem = string type initial = unit val reader : unit -> in_channel -> initial elem val of_string : unit -> string -> initial elem val string_of : unit -> 'a elem -> string end