Module type S.IO

type 'a t
type fd
type in_channel
type out_channel
type 'a stream
type stream_count
val getaddrinfo : string -> string -> Unix.getaddrinfo_option list -> Unix.addr_info list t
val connect : Unix.socket_domain -> Unix.sockaddr -> fd t
val close : fd -> unit t
val sleep : float -> unit t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val catch : (unit -> 'a t) -> (exn -> 'a t) -> 'a t
val try_bind : (unit -> 'a t) -> ('a -> 'b t) -> (exn -> 'b t) -> 'b t
val ignore_result : 'a t -> unit
val return : 'a -> 'a t
val fail : exn -> 'a t
val run : 'a t -> 'a
val atomic : (in_channel -> 'a t) -> in_channel -> 'a t
val in_channel_of_descr : fd -> in_channel
val out_channel_of_descr : fd -> out_channel
val input_char : in_channel -> char t
val really_input : in_channel -> bytes -> int -> int -> unit t
val output_string : out_channel -> string -> unit t
val flush : out_channel -> unit t
val iter : ('a -> unit t) -> 'a list -> unit t
val iter_serial : ('a -> unit t) -> 'a list -> unit t
val map : ('a -> 'b t) -> 'a list -> 'b list t
val map_serial : ('a -> 'b t) -> 'a list -> 'b list t
val fold_left : ('a -> 'b -> 'a t) -> 'a -> 'b list -> 'a t
val stream_from : (stream_count -> 'b option t) -> 'b stream
val stream_next : 'a stream -> 'a t
type mutex
val mutex_create : unit -> mutex
val mutex_with : mutex -> (unit -> 'a t) -> 'a t
type condition
val condition_create : unit -> condition
val condition_wait : condition -> mutex -> unit t
val condition_signal : condition -> unit
val condition_broadcast : condition -> unit