相关疑难解决方法(0)

类型MonadPlus,Alternative和Monoid之间的区别?

标准库的Haskell类型类MonadPlus,Alternative以及Monoid各自提供两种方法具有基本相同的语义:

  • 空值:mzero,emptymempty.
  • 操作员a -> a -> a,在类型类联接值加在一起:mplus,<|>mappend.

所有这三个都规定了应遵守的法律:

mempty `mappend` x = x
x `mappend` mempty = x
Run Code Online (Sandbox Code Playgroud)

因此,似乎三个类型都提供相同的方法.

(Alternative也提供somemany,但它们的默认定义通常是足够的,所以它们在这个问题上并不太重要.)

所以,我的疑问是:为什么这三个极为相似的类?除了不同的超类限制之外,它们之间是否有任何真正的区别?

haskell functional-programming typeclass applicative monoids

80
推荐指数
1
解决办法
5625
查看次数