阅读http://eed3si9n.com/learning-scalaz/Order.html这个例子给出了:
scala> 1.0 ?|? 2.0
res10: scalaz.Ordering = LT
关于订购的所有陈述都是:
"
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.
&#34;
在这种情况下scalaz.Ordering有什么意义?
1.0 max 2.0使用的是标准Scala API max方法,与scalaz无关?
答案 0 :(得分:4)
Scalaz does provide this syntax用于Order
个实例的内容。在这种情况下,您{J}将使用标准库中的1.0 max 2.0
是正确的,因为它更具体(因为您可以通过使用max
启动电源模式来快速确认REPL然后输入类似:power
)的内容。
在这种情况下,更好的例子就是settings.processArgumentString("-print typer")
,因为标准库没有为some(2.0) max some(1.0)
提供隐藏Scalaz的max
。
答案 1 :(得分:0)
Tom Switzer puts it concisely in a related thread:
scalaz返回a而不是从
Int
返回Order#compare
scalaz.Ordering
。