すべてMonad
がMonoid
シーケンス操作であるため。Monad
Haskellで継承しないのはなぜMonoid
ですか?
1 に答える
13
Monad
偶数である必要はありません。これはすべての で機能しますApplicative
。はい、次のように定義できます。
class (Functor f, Monoid (f ())) => Applicative f where
ただし、これは、Monoid
インスタンスを作成するたびにインスタンスを提供する必要があることを意味しApplicative
ます。確かに、このMonoid
インスタンスはあまり頻繁に使用されないため、これは非常に煩わしい場合があります。
より良い解決策は、 の周りに newtype ラッパーを作成することです。そうすれば、すべてのアプリケーション ファンクターf ()
のインスタンスを一度だけ提供できます。reducers パッケージMonoid
ですぐに利用できるものがあります。
于 2013-05-14T16:57:19.673 に答える