sig
  type +'a m
  val return : '-> 'Amall_types.IO_Type.m
  val bind :
    ('-> 'Amall_types.IO_Type.m) ->
    'Amall_types.IO_Type.m -> 'Amall_types.IO_Type.m
  val bind_rev :
    'Amall_types.IO_Type.m ->
    ('-> 'Amall_types.IO_Type.m) -> 'Amall_types.IO_Type.m
  val error : exn -> 'Amall_types.IO_Type.m
  val catch :
    (unit -> 'Amall_types.IO_Type.m) ->
    (exn -> 'Amall_types.IO_Type.m) -> 'Amall_types.IO_Type.m
  type output_channel
  val stdout : Amall_types.IO_Type.output_channel
  val write :
    Amall_types.IO_Type.output_channel ->
    string -> unit Amall_types.IO_Type.m
  val write_from :
    Amall_types.IO_Type.output_channel ->
    string -> int -> int -> int Amall_types.IO_Type.m
  type input_channel
  val open_in :
    string -> Amall_types.IO_Type.input_channel Amall_types.IO_Type.m
  val close_in :
    Amall_types.IO_Type.input_channel -> unit Amall_types.IO_Type.m
  val read_into :
    Amall_types.IO_Type.input_channel ->
    string -> int -> int -> int Amall_types.IO_Type.m
  val runIO : 'Amall_types.IO_Type.m -> 'Amall_types.res
  val flush :
    Amall_types.IO_Type.output_channel -> unit Amall_types.IO_Type.m
  val printf :
    ('a, unit, string, unit Amall_types.IO_Type.m) Pervasives.format4 -> 'a
  val close_out :
    Amall_types.IO_Type.output_channel -> unit Amall_types.IO_Type.m
  val run_and_ignore_result : unit Amall_types.IO_Type.m -> unit
  type server
  val establish_server :
    ?buffer_size:int ->
    ?backlog:int ->
    Unix.sockaddr ->
    (Amall_types.IO_Type.input_channel * Amall_types.IO_Type.output_channel ->
     unit) ->
    Amall_types.IO_Type.server
  val shutdown_server : Amall_types.IO_Type.server -> unit
  val wait_server : Amall_types.IO_Type.server -> unit Amall_types.IO_Type.m
end