comparator returns a java.util.Comparator when specifying a predicate (a function that returns true or false). You do not need this if you use explicitly compare . So simple:
(sort #(compare (str/upper-case %1) (str/upper-case %2)) ["B" "a" "c" "F" "r" "E"]) ;=> ("a" "B" "c" "E" "F" "r")
Alternatively use sort-by :
(sort-by str/upper-case ["B" "a" "c" "F" "r" "E"]) ;=> ("a" "B" "c" "E" "F" "r")
source share