【发布时间】:2011-11-20 22:19:34
【问题描述】:
考虑以下函数:
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:这个问题不是关于“这是惯用的吗?”只是问为什么会这样。
【问题讨论】: