在Haskell中,为什么mappend(来自类Monoid)的后缀别名<>而不是+?在代数 class 中,+通常用于monoid的二进制运算符。

最佳答案

函数+特定于数字,而且,这只是对数字实现Monoid的一种方法(*同样有效)。同样,对于布尔值,使用&&||同样有效。使用符号+表示Monoids特别是关于加法的,实际上它们实际上是任何关联操作。

确实,至少以我的经验,很可能会以类似于添加的方式使用mappend:连接列表或 vector ,集合或 map 的并集等,等等。但是,Haskell的心态倾向于通用性和对数学的坚持原则(可以说)比什么更直观。在我看来,将mappend视为一种一般的加法,并在不适当的情况下进行调整,这当然是合理的。

07-26 00:56