Clojure 2024 年调查问卷 中分享您的想法!

欢迎!请参阅关于页面以了解更多关于该功能的详细信息。

+3
Clojure
重新标记

clojuredoc 对于 sort 的说明
比较器必须实现 java.util.Comparator。
然而,这似乎并非如此。提供给 2 元 sort 函数的第一个参数可以显式返回 truefalse;它不需要实现 java.util.Comparator

如果 clojuredoc 被更新以反映这一重要特性将很棒。

还有另一个文档https://clojure.org/guides/comparators,它更详细地说明了。但据我观察,该文档的存在并不能免除(在某种意义上)简短文档仍然正确,即使它是不完整的。

1 答案

+1

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

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

该指南本身确实没有明确提到这一点,但在我看来,考虑到它明确表示可以通过调用任何 Clojure 函数的 compare 方法来“看到这一点”,这似乎是可以理解的。

这一点特别详细地提到了 https://clojure.org/reference/special_forms#fn, 这是由 `fn` 的文档字符串提到的。
关于指南中关于实现细节的文字,这是一个很好的观点。我同意文档字符串应该指向指南的目标。
by
编辑 by
似乎文档应提供给用户不仅真实信息,还有有用信息。阅读者想知道如何构建一个有效的比较函数。也就是说,它应该是1)一个返回显式`false`的二元函数,如果两个给定元素顺序颠倒,如果值相等则返回`false`, explicit `true`(区别于任何Truthy值)
Otherwise OR 2)一个返回负数、零或正整数的二元函数,指示其参数的相对顺序。有关角落案例的更多详情,请参阅...
by
我认为在排序文档字符串中提到fn实现比较器会遇到这样的问题。
...