Either.Firsttype ('a, 'b) t = ('a, 'b) tinclude Monad.S2_local with type ('a, 'b) t := ('a, 'b) tmodule Let_syntax : sig ... endmodule Monad_infix : sig ... endSame as Infix, except the monad type has two arguments. The second is always just passed through.
include Applicative.S2_local with type ('a, 'b) t := ('a, 'b) tval return : 'a -> ('a, _) tmodule Applicative_infix : sig ... endval value : ('a, _) t -> default:'a -> 'aval to_option : ('a, _) t -> 'a optionval with_return : ('a With_return.return -> 'b) -> ('a, 'b) t