`sig
type 'a t = 'a
val return : 'a -> 'a t
val ( >>= ) : 'a t -> ('a -> 'b t) -> 'b t
val fail : exn -> 'a t
val catch : (unit -> 'a t) -> (exn -> 'a t) -> 'a t
type in_channel
type out_channel
val open_connection : Unix.sockaddr -> (in_channel * out_channel) t
val output_char : out_channel -> char -> unit t
val output_binary_int : out_channel -> int -> unit t
val output_string : out_channel -> string -> unit t
val flush : out_channel -> unit t
val input_char : in_channel -> char t
val input_binary_int : in_channel -> int t
val really_input : in_channel -> Bytes.t -> int -> int -> unit t
val close_in : in_channel -> unit t
end`