为什么`mappend`中缀别名`<>`而不是`+`?

Rob*_*mba 5 haskell

在Haskell中,为什么mappend(来自类Monoid)的中缀别名<>而不是+?代数课程+通常用于幺半群的二元算子.

lim*_*imp 14

该函数+特定于数字,而且,它只是一种为数字实现Monoid的方法(*同样有效).同样,对于布尔值,使用&&和使用同样有效||.使用符号+表明,幺约此外具体地说,当实际上他们几乎所有的相关操作.

确实,至少在我的经验中,人们可能会以mappend类似的方式使用:连接列表或向量,接受集合或映射等等.但是,Haskell心态有利于普遍性和遵守数学原则(可以说)更直观的东西.这当然是合理的,在我看来,要考虑mappend是一种普遍加入,并在情况下调整的地方是没有的.


dup*_*ode 5

部分原因是最不惊讶原则,部分是因为数字(即SumProduct来自Data.Monoid)至少有两个合理的幺半群实例.