sig
type io_in = Fragments.io_in
type io_out = Fragments.io_out
exception Unknown_constructor
type 'a r = Io.io_in -> 'a
type 'a w = 'a -> Io.io_out -> unit
type 'a literate = 'a Io.r * 'a Io.w
type 'a sum_io_spec =
(string -> 'a Io.r) * ('a -> string * (Io.io_out -> unit))
type 'a record_io_spec =
(string * ('a -> Io.io_in -> 'a) * ('a -> Io.io_out -> unit)) list
type ('a, 'b) iterator = 'b -> ('a -> unit) -> unit
type ('a, 'b) builder = unit -> ('a -> unit) * (unit -> 'b)
type ('a, 'b) collection_io_spec =
'a Io.literate * ('a, 'b) Io.iterator * ('a, 'b) Io.builder
val assoc3 : 'a -> ('a * 'b * 'c) list -> 'b * 'c
val read : 'a Io.literate -> Io.io_in -> 'a
val write : 'a Io.literate -> 'a -> Io.io_out -> unit
val write_and_flush : 'a Io.literate -> 'a -> Io.io_out -> unit
val finish : Io.io_in -> unit
val flush : Io.io_out -> unit
val io_int : int Io.literate
val io_int64 : int64 Io.literate
val io_string : string Io.literate
val io_char : char Io.literate
val io_bool : bool Io.literate
val io_float : float Io.literate
val io_unit : unit Io.literate
val io_convert :
('a -> 'b) -> ('b -> 'a) -> 'a Io.literate -> 'b Io.literate
val io_pair : 'a Io.literate -> 'b Io.literate -> ('a * 'b) Io.literate
val io_triple :
'a Io.literate ->
'b Io.literate -> 'c Io.literate -> ('a * 'b * 'c) Io.literate
val io_quadruple :
'a Io.literate ->
'b Io.literate ->
'c Io.literate -> 'd Io.literate -> ('a * 'b * 'c * 'd) Io.literate
val io_list : 'a Io.literate -> 'a list Io.literate
val io_array : 'a Io.literate -> 'a array Io.literate
val io_hashtbl :
'a Io.literate -> 'b Io.literate -> ('a, 'b) Hashtbl.t Io.literate
val io_record : 'a Io.record_io_spec -> 'a -> 'a Io.literate
val io_collection : ('a, 'b) Io.collection_io_spec -> 'b Io.literate
val io_sum : 'a Io.sum_io_spec -> 'a Io.literate
val io_option : 'a Io.literate -> 'a option Io.literate
val io_not_implemented : 'a Io.literate
val convert : reader:Io.io_in -> writer:Io.io_out -> unit -> unit
val dump : reader:Io.io_in -> unit -> unit
end