type 's scheduler = {bind : 'a 'b. ('a, 's) io -> ('a -> ('b, 's) io) -> ('b, 's) io;return : 'a. 'a -> ('a, 's) io;
}module type MUTEX = sig ... endmodule type IO = sig ... endmodule Make (T : sig ... end) : sig ... endmodule type UID = sig ... endtype kind = [ | `A| `B| `C| `D
]