这种幺半群法的名称是什么?

Gre*_*aro 8 haskell

在文档中Data.Monoid,它声明应满足以下法律:

mappend mempty x = x
mappend x mempty = x
mappend x (mappend y z) = mappend (mappend x y) z
mconcat = foldr mappend mempty
Run Code Online (Sandbox Code Playgroud)

我对这些的理解是前两个是同一性,第三个是相关性.

但是第四行的法律是什么?身份再次,但为mconcat?

pig*_*ker 12

在数学上,幺半群的定义需要存在mempty类似于mappend满足前三个定律的东西:左右同一性和相关性.

该mconcat方法已被添加到类中以反映这样的事实:列表中的累积通常是使用幺半群的方式.第四定律是可执行规范的mconcat:的确,那很有规律是代码行赋予的默认实现mconcat.制作mconcat类的成员意味着,每个Monoid实例,你可以自由地给予mconcat更有效的实现,就像只要其与默认同意.

我不清楚以mconcat这种方式重新实现是一个特别大的胜利.我倾向于避免mconcat支持(令人困惑的名字)fold.