在Haskell中,为什么mappend
(来自类Monoid
)的后缀别名<>
而不是+
?在代数 class 中,+
通常用于monoid的二进制运算符。
最佳答案
函数+
特定于数字,而且,这只是对数字实现Monoid的一种方法(*
同样有效)。同样,对于布尔值,使用&&
和||
同样有效。使用符号+
表示Monoids特别是关于加法的,实际上它们实际上是任何关联操作。
确实,至少以我的经验,很可能会以类似于添加的方式使用mappend
:连接列表或 vector ,集合或 map 的并集等,等等。但是,Haskell的心态倾向于通用性和对数学的坚持原则(可以说)比什么更直观。在我看来,将mappend
视为一种一般的加法,并在不适当的情况下进行调整,这当然是合理的。