10

由于everyMonad是一个Monoid关于排序操作的。为什么不在haskell中Monad继承?Monoid

4

1 回答 1

13

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

class (Functor f, Monoid (f ())) => Applicative f where

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

更好的解决方案是创建一个 newtype 包装器f (),然后您可以Monoid一劳永逸地为所有应用函子提供一个实例。在reducers 包中有一个现成的。

于 2013-05-14T16:57:19.673 回答