Module Colombe.Sigs

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