Оказывается, что преобладают накладные расходы на манипулирование коллекциями символов, поэтому на самом деле быстрее сравнивать исходную строку с обращенной версией, даже если кажется, что вы сравниваете вдвое больше символов, чем необходимо. Убедитесь, что вы используете clojure.string / reverse, а не clojure.core / reverse. Обычное соглашение Clojure - заканчивать предикат знаком вопроса, но не использовать префикс «is».
(require 'clojure.string)
(defn palindrome? [s] (= s (clojure.string/reverse s)))
(defn palindrome-num? [n] (palindrome? (str n)))