2024 Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面获取有关本站工作方式的更多信息。

+3
Clojure
重新标记

clojuredoc中关于sort的解释说
comparator必须实现java.util.Comparator。
然而,这似乎并不成立。作为二元sort函数的第一个参数提供的函数可以显式返回true或false;它不必实现java.util.Comparator。

如果clojuredoc能够更新以反映这一重要功能,那就太好了。

还有另一篇文档https://clojure.org/guides/comparators,它更详细地解释了这一点。但是,我认为这份文档的存在并不能使短篇文档从错误中解脱出来,即使它是不完整的。

1 答案

+1
回答者:

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

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

指南本身确实没有明确提及这个实现细节,但我觉得别的解释方式是不可能的,因为它明确地说,“你可以通过调用任何Clojure函数的compare方法来查看这一点”。

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

编辑了
文档应该不仅提供真实的信息,而且提供有用的信息。读者想知道如何构造一个有效的比较函数。也就是说,它应该是 1) 一个返回显式 `false` 如果两个给定元素顺序错误的二元函数,如果值相等则返回 `false`,并通过显式 `true`(与任何真值不同)
否则或 2) 返回一个负数、零或正整数的二元函数,表示其参数的相对顺序。有关边缘情况的更详细信息,请参阅...
我认为在排序的文档字符串中提及fn实现了Comparator将解决这个问题。
...