I expected this code snippet to produce the original vector, but sorted in a case-insensitive way. Instead I get the original vector untouched. Why doesn’t my comparator work?
user=> (ns user (require [clojure.contrib.string :as str]))
nil
user=> (sort
(comparator #(compare (str/upper-case %1) (str/upper-case %2)))
["B" "a" "c" "F" "r" "E"])
("B" "a" "c" "F" "r" "E")
comparatorreturns ajava.util.Comparatorwhen given a predicate (a function which returns true or false). You don’t need it if you’re usingcompareexplicitly. So just:Alternatively, use
sort-by: