这箱scalaz有什么用?

这箱scalaz有什么用?,scala,scalaz,Scala,Scalaz,阅读此示例的过程如下所示: scala> 1.0 ?|? 2.0 res10: scalaz.Ordering = LT 有关订购的所有说明如下: " scala>1>2.0 res8:Boolean=false scala>1 gt 2.0 :14:错误:找不到参数F0:scalaz.Order[任何]的隐式值 1燃气轮机2.0 ^ scala>1.0?|?2.0 res10:scalaz.Ordering=LT scala>1.0最大值2.0 res11:Double=2.0 Ord

阅读此示例的过程如下所示:

scala> 1.0 ?|? 2.0
res10: scalaz.Ordering = LT
有关订购的所有说明如下:

"

scala>1>2.0
res8:Boolean=false
scala>1 gt 2.0
:14:错误:找不到参数F0:scalaz.Order[任何]的隐式值
1燃气轮机2.0
^
scala>1.0?|?2.0
res10:scalaz.Ordering=LT
scala>1.0最大值2.0
res11:Double=2.0
Order启用返回排序的?|?语法:LT、GT和EQ。它还通过声明Order方法启用LT、GT、lte、gte、min和max运算符。与Equal类似,比较Int和Doubl会导致编译失败。
"

在这种情况下,scalaz.排序的意义是什么

1.0 max 2.0使用的是标准的Scala API max方法,与scalaz?不相关。

scalaz用于具有
订单
实例的事物。在本例中,您是对的,
1.0 max 2.0
将使用标准库中的
max
,因为它更具体(您可以通过在REPL中使用
:power
启动电源模式,然后输入类似
设置.processArgumentString(“-print typer”)
的内容来快速确认)

在这种情况下,更好的例子是类似于
some(2.0)max-some(1.0)
,因为标准库没有为
选项[Double]
提供隐藏Scalaz的
max

scalaz不是从
Order#compare
返回
Int
,而是返回
scalaz.订购

感谢您提供的示例“some(2.0)max some(1.0)”,非常有用
scala> 1 > 2.0
res8: Boolean = false

scala> 1 gt 2.0
<console>:14: error: could not find implicit value for parameter F0: scalaz.Order[Any]
              1 gt 2.0
              ^

scala> 1.0 ?|? 2.0
res10: scalaz.Ordering = LT

scala> 1.0 max 2.0
res11: Double = 2.0

Order enables ?|? syntax which returns Ordering: LT, GT, and EQ. It also enables lt, gt, lte, gte, min, and max operators by declaring order method. Similar to Equal, comparing Int and Doubl fails compilation.