comparator
возвращает java.util.Comparator
при наличии предиката (функция, которая возвращает истину или ложь).Вам это не нужно, если вы используете compare
явно.Так что просто:
(sort #(compare (str/upper-case %1) (str/upper-case %2))
["B" "a" "c" "F" "r" "E"])
;=> ("a" "B" "c" "E" "F" "r")
В качестве альтернативы используйте sort-by
:
(sort-by str/upper-case ["B" "a" "c" "F" "r" "E"])
;=> ("a" "B" "c" "E" "F" "r")