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