sig
  type error = EndOfFile | IntOfString | SysError of string
  type world
  type ('left, 'right) either
  type 'a t = Io.world -> (Io.error, 'a) Io.either * Io.world
  val __conjure_up : unit -> Io.world
  val bind : 'Io.t -> ('-> 'Io.t) -> 'Io.t
  val return : '-> 'Io.t
  val throw : Io.error -> 'Io.t
  val catch : 'Io.t -> (Io.error -> 'Io.t) -> 'Io.t
  val print_char : char -> unit Io.t
  val print_string : string -> unit Io.t
  val print_int : int -> unit Io.t
  val print_float : float -> unit Io.t
  val print_endline : string -> unit Io.t
  val print_newline : unit -> unit Io.t
  val prerr_char : char -> unit Io.t
  val prerr_string : string -> unit Io.t
  val prerr_int : int -> unit Io.t
  val prerr_float : float -> unit Io.t
  val prerr_endline : string -> unit Io.t
  val prerr_newline : unit -> unit Io.t
  val read_line : unit -> string Io.t
  val read_int : unit -> int Io.t
  val read_float : unit -> float Io.t
  val open_out : string -> Stdlib.out_channel Io.t
  val output_char : Stdlib.out_channel -> char -> unit Io.t
  val output_string : Stdlib.out_channel -> string -> unit Io.t
  val close_out : Stdlib.out_channel -> unit Io.t
end