由于每个Monad
都是排序操作上的Monoid
。
为什么Monad
不继承haskell中的Monoid
?
最佳答案
甚至不必是Monad
,这适用于每个Applicative
。所以是的,您可以定义:
class (Functor f, Monoid (f ())) => Applicative f where
但这意味着您每次编写
Monoid
实例时都必须提供Applicative
实例。肯定会很烦人,因为这个Monoid
实例不会经常使用。更好的解决方案是在
f ()
周围创建一个新的包装器,然后可以一次为所有应用仿函数提供Monoid
实例。 the reducers package中有一个随时可用。关于haskell - 每个monad都是monoid吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16548344/