gpt4 book ai didi

scala - 为什么 Scalaz 中 A => M[A] 没有 >=> 半群?

转载 作者:行者123 更新时间:2023-12-04 23:44:48 24 4
gpt4 key购买 nike

这是我之前 question 的后续
Kleisli定义两个运算符 <=< (撰写)和 >=> (进而)。 >=>对我来说看起来很自然,我不明白如何<=<可能有用。

而且,好像没有>=> A => M[A] 的半群但<=<半群确实存在。

其背后的原理是什么?

最佳答案

compose (或 <=< )在无点和非无点样式之间转换时更自然一些。例如,如果我们有这些函数:

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

compose案例 fg在等式两边的顺序相同。

不幸的是 Scala 的类型推断经常使 andThen (或 >=>)更方便,而且比 compose 使用更广泛。 .所以这是一个数学约定和 Scala 类型推断系统的怪癖不一致的情况。 Scalaz(考虑到项目的文化,这并不奇怪)选择了数学方面。

关于scala - 为什么 Scalaz 中 A => M[A] 没有 >=> 半群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com