Чтобы уточнить, что написал дриш:
Поскольку в настоящее время реализовано (1.2), подсказки типа не проявляются в API (переменные экземпляра, сигнатуры конструктора / метода), а скорее используются для устранения вызовов отражения в лексической области видимости. Например:
user=> (set! *warn-on-reflection* true)
true
user=> (defprotocol P (foo [p]))
P
user=> (defrecord R [n] P (foo [_] (.intValue n)))
Reflection warning, NO_SOURCE_PATH:4 - reference to field intValue can't be resolved.
user.R
user=> (defrecord R [^Number n] P (foo [_] (.intValue n)))
user.R
Остается проблема с упаковкой простых чисел, хотя двойной массив является объектом, так что не беспокойтесь.
Тем не менее, я считаю, что есть некоторые улучшения в основной ветке (1.3), такие как переменные экземпляра и т. Д., Которые могут быть переданы как примитивные типы на основе подсказок типов.