有一些情况,我需要执行反转排序。虽然我可以传递一个比较器函数以反转结果 (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 核心库的一部分(更自私地说,这样我不用在项目中需要/命名空间这些函数)。