每个monad都是monoid?

vin*_*hkr 9 haskell category-theory

因为每个Monad都是Monoid在测序操作上.为什么不Monad继承Monoidhaskell?

Sjo*_*her 12

它不一定是Monad偶数,这适用于每一个人Applicative.所以是的,您可以定义:

class (Functor f, Monoid (f ())) => Applicative f where
Run Code Online (Sandbox Code Playgroud)

但这意味着Monoid每次编写Applicative实例时都必须提供实例.这可能非常烦人,因为这个Monoid实例不会经常使用.

更好的解决方案是创建一个newtype包装器f (),然后您可以Monoid一劳永逸地为所有applicative functor 提供一个实例.Reducer包中有一个现成的.