2024 年 Clojure 调查! 分享您的看法。

欢迎使用!请查看 关于 页面以了解更多有关功能的工作方式的信息。

+3
Clojure
重新标记

clojuredoc 中关于 sort 的说明
比较器必须实现 java.util.Comparator。
然而,情况似乎并非如此。作为 2-ary sort 函数的第一个参数提供的函数可以返回显式的 truefalse;它不一定需要实现 java.util.Comparator

如果 clojuredoc 更新以反映这个重要的功能将非常好。

还有另一份文档 https://clojure.org/guides/comparators 对此进行了更详细的解释。但在我看来,即使该文档存在,也不能排除这个简短文档的正确性,即使它是不完整的。

1 答案

+1
by

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

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

该指南本身确实没有明确提及实现细节,但鉴于它明确表示您可以通过调用任何Clojure函数的compare方法来“看到这一点”,我认为其他解释方式不太可能。

这个特定的细节在https://clojure.org/reference/special_forms#fn,中被明确提及,这也是`fn`文档字符串提到的。
by
关于指南中实现细节文本的公正观点。同意,文档字符串指向指南可能是目标。

编辑
看起来文档应该不仅提供正确信息,还应该提供有用信息。 读者想知道如何构建一个有效的比较函数。 也就是说,它应该要么是 1) 一个返回在给定元素顺序错误时显式返回 `false` 的二元函数,当值相等时返回 `false`,显式地返回 `true`(与其他任何真值不同)。
否则或 2) 一个二元函数,返回一个负数、零或正整数,表示其参数的相对顺序。 更详细的边界情况,请参阅...
我认为在排序文档字符串中提到 fn 实现了比较器将解决此问题。
...