Module type Monad.S2

module type S2 = sig .. end

type ('_, '_) t 
include Monad.Basic2
include Applicative.S2
val (>>=) : ('p, 'a) t -> ('a -> ('p, 'b) t) -> ('p, 'b) t
val join : ('p, ('p, 'a) t) t -> ('p, 'a) t
val mcompose : ('b -> ('p, 'c) t) ->
('a -> ('p, 'b) t) -> 'a -> ('p, 'c) t