sig
  type +'a m
  val return : '-> 'It_type.IT.It_IO.m
  val bind :
    ('-> 'It_type.IT.It_IO.m) ->
    'It_type.IT.It_IO.m -> 'It_type.IT.It_IO.m
  val bind_rev :
    'It_type.IT.It_IO.m ->
    ('-> 'It_type.IT.It_IO.m) -> 'It_type.IT.It_IO.m
  val error : exn -> 'It_type.IT.It_IO.m
  val catch :
    (unit -> 'It_type.IT.It_IO.m) ->
    (exn -> 'It_type.IT.It_IO.m) -> 'It_type.IT.It_IO.m
  type output_channel
  val stdout : It_type.IT.It_IO.output_channel
  val write :
    It_type.IT.It_IO.output_channel -> string -> unit It_type.IT.It_IO.m
  type input_channel
  val open_in : string -> It_type.IT.It_IO.input_channel It_type.IT.It_IO.m
  val close_in : It_type.IT.It_IO.input_channel -> unit It_type.IT.It_IO.m
  val read_into :
    It_type.IT.It_IO.input_channel ->
    string -> int -> int -> int It_type.IT.It_IO.m
  val runIO : 'It_type.IT.It_IO.m -> [ `Error of exn | `Ok of 'a ]
end