type ('l, 'r) either = | L of 'l| R of 'r
type 't impl = {bind : 'a 'b. ('a, 't) io -> ('a -> ('b, 't) io) -> ('b, 't) io;return : 'a. 'a -> ('a, 't) io;
}type ('flow, 's) rdwr = {rd : 'flow -> bytes -> int -> int -> ([ `End | `Len of int ], 's) io;wr : 'flow -> string -> int -> int -> (unit, 's) io;
}module type X = sig ... end