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