Рассмотрим следующую функцию:
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: этот вопрос не о том, "это идиоматика или нет?" Просто спрашиваю, почему это так.