Typeclassopedia Раздел Monad Transformers объясняет:
К сожалению, монады не сочиняют так же хорошо, как аппликативные функторы (еще одна причина использовать аппликативный, если вам не нужна полная мощность, которую обеспечивает Монада)
Глядя на типы >>=
и <*>
, приведенное выше утверждение мне не ясно.
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
(>>=) :: Monad m => m a -> (a -> m b) -> m b
Пожалуйста, объясните, что "монады не сочиняют так же хорошо, как аппликативные функции".
Я прочитал этот ответ, но не могли бы вы привести пример, чтобы помочь мне понять?