Ответ 1
Вы сообщаете компилятору, какой тип вы хотите что-то добавить, добавив к нему метаданные.
Это может сделать некоторые операции быстрее и помочь устранить отражение. Символом ^
является синтаксический сахар, чтобы добавить это в метаданные для следующего.
(defn my-function [^String my-string] ....
Символ в строку:
(str 'my-symbol)
Для чисел используйте имя типа как имя функции:
(int 4922354)
(double 42)
(byte 254)
(char 20)
etc...
Для получения дополнительной информации: http://clojure.org/java_interop#toc35