HaskellsortBy
函数将(a -> a -> Ordering)
其作为第一个参数。谁能教育我那里的推理是什么?我的背景完全是具有类似功能的语言(a -> a -> Bool)
,所以不得不编写一个返回LT
/的语言GT
有点令人困惑。
这是在静态类型/纯函数式语言中执行此操作的标准方式吗?这是 ML 后裔语言特有的吗?是否有一些我没有看到的基本优势,或者使用布尔值有一些隐藏的缺点?
总结:
不是,它实际上是
Ordering
(显然没有在引擎盖下使用它来进行排序,但仍然)GT | LT
GT | EQ | LT
GHC
返回三分法值更紧密地模拟两个元素比较的可能结果
在某些情况下,使用
Ordering
而不是 aBool
将保存比较使用 an
Ordering
可以更轻松地实现稳定的排序使用 an
Ordering
可以让读者清楚地知道两个元素之间的比较正在进行(布尔值本身并不具有这种含义,尽管我觉得许多读者会假设它)
我暂时接受 Carl 的回答,并发布上述摘要,因为在本次编辑中没有一个单一的答案能达到所有要点。