Scala 为什么没有>=&燃气轮机;A的半群=>;在斯卡拉兹读硕士?
这是我上一篇文章的后续文章Scala 为什么没有>=&燃气轮机;A的半群=>;在斯卡拉兹读硕士?,scala,scalaz,kleisli,semigroup,Scala,Scalaz,Kleisli,Semigroup,这是我上一篇文章的后续文章 Kleisli定义了两个运算符(然后)。=>对我来说看起来很自然,我不明白A=>M[A]的半群是如何构成的,但是组成了(或者我怀疑唯一真正的答案是数学传统。两者在a=>a中是等价的,不是吗?所以这只是一种惯例,比如矩阵乘法被定义为行-列而不是列-行。谢谢,我明白了。我想知道,如何实现smth。比如:假设我有一个函数子函数(名称:String):XmlNode=>Option[XmlNode]。我想编写列表(“a”、“b”、“c”).map(name=>child(na
Kleisli
定义了两个运算符
(然后)。=>
对我来说看起来很自然,我不明白
A=>M[A]的半群是如何构成的,但是组成了(或者我怀疑唯一真正的答案是数学传统。两者在a=>a
中是等价的,不是吗?所以这只是一种惯例,比如矩阵乘法被定义为行-列而不是列-行。谢谢,我明白了。我想知道,如何实现smth。比如:假设我有一个函数子函数(名称:String):XmlNode=>Option[XmlNode]
。我想编写列表(“a”、“b”、“c”).map(name=>child(name)).foldMap(…)
来获取通过路径“a/b/c”
返回节点的函数。现在我需要反转列表:(这似乎是完全多余的。`是的,在这种情况下,=>
似乎与操作的作用更为接近。我可能会跳过幺半群,直接使用=>
。或者,也可以只定义这样一个幺半群:monoid.instance({node=>Some(node)
(还不确定如何正确操作)并将其传递到文件夹地图。我可能会问一个新问题。
val f: Int => Int = _ + 1
val g: Int => Int = _ * 10
scala> (f andThen g)(3) == g(f(3))
res0: Boolean = true
scala> (f compose g)(3) == f(g(3))
res1: Boolean = true