Складная, моноидная и монадная
Рассмотрим следующую подписьfoldMap
foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m
Это очень похоже на «связывание», только с замененными аргументами:
(>>=) :: Monad m => m a -> (a -> m b) -> m b
Поэтому мне кажется, что между какими-тоFoldable
, Monoid
а такжеMonad
, но я не могу найти его в суперклассах. Предположительно я могу преобразовать один или два из них в другой, но я не уверен, как.
Могут ли эти отношения быть подробными?