9
由于每个Monad
是关于测序操作的Monoid
。 为什么Monad
在haskell中继承Monoid
?每个monad都是monoid?
由于每个Monad
是关于测序操作的Monoid
。 为什么Monad
在haskell中继承Monoid
?每个monad都是monoid?
即使是这样,它也不一定是Monad
,这适用于每个Applicative
。所以,是的,你可以定义:
class (Functor f, Monoid (f())) => Applicative f where
但这意味着你将不得不每次你写一个Applicative
实例时提供Monoid
实例。这可能是相当烦人的,当然因为这个Monoid
实例不会经常使用。
更好的解决方案是创建一个围绕f()
的新类型包装,然后您可以为所有应用函数提供一个全新的Monoid
实例。有一个在the reducers package随时可用。
您在这里的定序操作究竟意味着什么? – 2013-05-14 17:27:33
@Rymoid:我很确定它是'>>'。 – 2013-05-14 17:31:45
@TikhonJelvis:有限形式的'>>',对吧? – 2013-05-14 17:39:39