Clojure 排序字符串值 - 不区分大小写

Nav*_*ngh 0 functional-programming clojure clojurescript

我正在尝试按值对地图进行排序(不区分大小写)。但似乎 clojure 排序功能区分大小写。见下面的例子,

cljs.user=> (sort {:1 "A" :2 "Z" :3 "i"})
([:1 "A"] [:2 "Z"] [:3 "i"])

cljs.user=> (reverse (sort {:1 "A" :2 "Z" :3 "i"}))
([:3 "i"] [:2 "Z"] [:1 "A"])
Run Code Online (Sandbox Code Playgroud)

任何人都可以为我建议一个解决方案,我如何通过不区分大小写的方式在 clojure 中排序?

Ste*_*ott 6

Java 提供了一个不区分大小写的字符串比较器:

(def m {:1 "A" :2 "Z" :3 "i"})
(sort-by val String/CASE_INSENSITIVE_ORDER m) ;; => ([:1 "A"] [:3 "i"] [:2 "Z"])
Run Code Online (Sandbox Code Playgroud)