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 : 'a Io.t -> ('a -> 'b Io.t) -> 'b Io.t
  val return : 'a -> 'a Io.t
  val throw : Io.error -> 'a Io.t
  val catch : 'a Io.t -> (Io.error -> 'a Io.t) -> 'a 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 -> Pervasives.out_channel Io.t
  val output_char : Pervasives.out_channel -> char -> unit Io.t
  val output_string : Pervasives.out_channel -> string -> unit Io.t
  val close_out : Pervasives.out_channel -> unit Io.t
end