Monads.Monad_generalised
type (_, +_, -_, _) t
val return : 'a -> ('a, 'i, 'i, 'p) t
val bind : ('a, 'i, 'j, 'p) t -> ('a -> ('b, 'j, 'k, 'p) t) -> ('b, 'i, 'k, 'p) t