2024 年 Clojure 状态调查! 发表您的看法。

欢迎!有关如何使用本站,请参阅 关于 页面的更多信息。

+3
Clojure
重新标记

clojure 库中对 sort 的文档说明
比较器必须实现 java.util.Comparator。
然而,情况似乎并非如此。作为二元 sort 函数的第一个参数提供的函数可以显式返回 truefalse;无需实现 java.util.Comparator

如果 clojuredoc 能更新以反映这个重要的特性,那就太好了。

还有一个文档 https://clojure.org/guides/comparators,它更详细地解释了这一点。但在我看来,该文档的存在并不能免除(即使不完整)由于 clojuredoc 短文档的正确性。

1 答案

+1

这并没有错。Clojure 函数 确实是 java.util.Comparator 的实例。Dave 在评论中提供的链接提供了更多详细信息。

即便如此,这似乎可以改进?文档字符串并没有指向该指南。指南本身也没有提到所有Clojure函数都实现自己的compare函数。
我同意,`sort` 和 `sort-by` 的文档字符串应该指向该指南。

指南本身确实没有明确提到实现细节,但是鉴于它明确指出您“可以通过调用任何Clojure函数的compare方法来查看这一点”,我不明白如何 khác thể解。

而且,这个特定的细节在 https://clojure.org/reference/special_forms#fn, 有明确规定,这是由 `fn` 的文档字符串提到的。
关于指南中实现细节的评论很合理。我同意,文档字符串指向指南应该是目标。

编辑 水平间隔
看起来文档除了提供真实信息,还应提供有用信息。读者想知道如何构建一个有效的比较函数。也就是说,它应该是1)一个返回显式 false 的二进制函数,如果两个给定的元素顺序不当,值相等时返回 false,并且显式返回 true(而不是任何真值)
否则或2) 一个返回负数、零或正整数的二进制函数,表示其参数的相对顺序。有关角落情况的更多细节,请参见...
水平间隔
我认为在排序文档字符串中提及 fn 实现 Comparator 将解决此问题。
...