Если Clojure не может подразумевать тип объекта Java, он возвращается к отражению для взаимодействия, которое намного медленнее.Если вы используете:
(set! *warn-on-reflection* true)
, то вы увидите эти предупреждения и в REPL.Если вы напишите подсказку своим методам, то Clojure сможет видеть типы и генерировать гораздо лучший код.например,
(defn get-img-coords
[^BufferedImage img]
(for [y (range (.getHeight img))
x (range (.getWidth img))]
[x y]))
Обратите внимание, что проверка лейн не является компилятором - это эквивалент лейнтера светлого линтера, возможно, для проверки этих предупреждений и других.