Haskell 用于将函数从 monad 应用到值的运算符或函数?

Haskell operator or function for applying function from monad to a value?

我正在 Haskell 中寻找一个函数或运算符,它实际上是 Monad 等效于 Applicative 运算符 <*> 的函数或运算符,它应用一个单子动作而不是一个裸函数,而不是这个:

(<*>) :: Applicative f => f (a -> b) -> f a -> f b

我正在寻找看起来像这样的东西:

... :: Monad m => m (a -> m b) -> m a -> m b

我不敢相信这不是标准函数,但我看不到任何匹配的东西。我错过了什么吗?

这将是另外两个基本 monad 函数的简单组合,即 join and ap;自:

ap :: Monad m => m (a -> b) -> m a -> m b
join :: Monad m => m (m a) -> m a

我们得到:

(join .) . ap :: Monad m => m (a -> m b) -> m a -> m b

以及:

(join .) . (<*>) :: Monad m => m (a -> m b) -> m a -> m b

或者,仅使用绑定运算符,另一个结构是:

(. (>>=)) . (>>=) :: Monad m => m (a -> m b) -> m a -> m b