有时我需要进行反向排序。虽然我可以传递一个比较函数来翻转结果 (sort #(compare %2 %1) coll)
,但要过一段时间才能意识到集合在逆序。
希望能有一两个函数以更声明式的方式完成这项操作(功能名称仅供参考)。
(defn rsort
"Same as sort, but reversed."
([coll] (rsort compare coll))
([comp coll] (sort #(comp %2 %1) coll)))
(defn rsort-by
"Same as sort-by, but reversed."
([keyfn coll] (rsort-by keyfn compare coll))
([keyfn comp coll] (sort-by keyfn #(comp %2 %1) coll)))
我最终将这些添加到了一个共享库中,以便在我的项目中使用,但如果这些功能能成为 Clojure 的核心库的一部分将是极好的(更自私地,这样我就不需要在项目中要求/命名空间这些函数了)。