- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Haskell 中,为什么 mappend
的中缀别名是(来自类(class) Monoid
)<>
而不是 +
?代数类(class) +
通常用于幺半群的二元运算符。
最佳答案
函数+
特定于数字,而且,它只是为数字实现 Monoid 的一种方法( *
同样有效)。同样,对于 bool 值,使用 &&
同样有效。和 ||
.使用符号 +
表明 Monoids 是关于加法的,而实际上它们只是关于任何关联运算。
确实,至少根据我的经验,人们可能会使用 mappend
以类似于加法的方式:连接列表或向量,采用集合或映射的并集等。然而,Haskell 的思维方式更倾向于通用性和对数学原理的坚持,而不是(可以说)更直观的东西。在我看来,考虑 mappend
当然是合理的。作为一种一般性的补充,并在不是的情况下进行调整。
关于haskell - 为什么 `mappend` 中缀别名是 `<>` 而不是 `+` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23794894/
(+)和 (++)只是 mappend 的特化;我对吗?为什么需要它们?这是无用的重复,因为 Haskell 有这些强大的类型类和类型推断。 假设我们删除 (+)和 (++)并重命名 mappend
在 Haskell 中,为什么 mappend 的中缀别名是(来自类(class) Monoid)<>而不是 + ?代数类(class) +通常用于幺半群的二元运算符。 最佳答案 函数+特定于数字,而
我有以下带有半群元素的阅读器模式: runFunction :: Reader Env Element runFunction = do a b <> c 在哪里 getA :: Reader
我听说Data.Text将替换 String s 在 future 的 Haskell 版本中。我遇到的一个问题是 (++)仅针对列表定义。连接两个 Text s,我需要使用 text1 `mappe
如果我 beta-reduce 以下表达式: foldr (mappend . Sum) 1 [2] = (mappend . Sum) 2 (foldr (mappend . Sum) 1 []
如果我 beta-reduce 以下表达式: foldr (mappend . Sum) 1 [2] = (mappend . Sum) 2 (foldr (mappend . Sum) 1 []
我是一名优秀的程序员,十分优秀!