这个scalaz案例有什么用?订购?

时间:2014-09-21 21:53:06

标签: scala scalaz

阅读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无关?

2 个答案:

答案 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