Рассмотрим следующую функцию:
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
Почему список аргументов a clojure.lang.ArraySeq
, а не что-то более распространенное, как PersistentVector
? Или почему ArraySeq
не реализует IFn
? Почему? Похоже, вы должны немного знать, что происходит с реализацией вещей при выполнении Clojure. Не стесняйтесь просвещать меня.
PS: этот вопрос не о том, "это идиоматично или нет?" Просто спрашивайте, почему это так.