type 't state = {bind : 'a 'b. ('a, 't) io -> ('a -> ('b, 't) io) -> ('b, 't) io;return : 'a. 'a -> ('a, 't) io;
}type 't both = {f : 'a 'b. ('a, 't) io -> ('b, 't) io -> ('a * 'b, 't) io;
}module type X = sig ... endmodule type FLOW = sig ... endmodule type STREAM = sig ... endmodule type DNS = sig ... end