Рассмотрим следующую функцию:
user> (defn first-args [& args]
(args 0))
#'user/first-args
user> (first-args 1 2 3) ;=> clojure.lang.ArraySeq cannot be cast to clojure.lang.IFn
Почему список аргументов clojure.lang.ArraySeq
, а не что-то более распространенное, например PersistentVector
? Или почему ArraySeq
не реализует IFn
? Причины производительности? Похоже, что вы должны знать базовую реализацию вещей во время выполнения Clojure. Не стесняйтесь просветить меня.
PS: этот вопрос не о том, "это идиоматизм или нет?" Просто спрашиваю, почему это так.