>>96
> いや、型クラスに関しては「機能が弱い」からこそ役に立つ場合がある

「機能が弱い」のではなくて、「機能が重複している」のは何で?
と言いたかった

私には Momoid クラスの機能と MonadPlus の機能が
(今のところ)重複しているように見えます
何というか、Monad の性質 + Monoid の性質 = MonadPlus の性質
という感じがするのです

だから本質的に MonadPlus クラスは必要なく (MonadPlus m) => ... は
(Monad m, Momoid m) => ... とライブラリの設計を変えても、
機能的には何も問題なく働くのではないかと思うのですが、どうでしょう?
(まだ何となくそう考えているだけで、詳しく検証はしていません)

(ただ、機能は重複しても意味が違うのであれば、
2つのクラスはそれぞれ区別すべきだとも思います)