为什么这是有效的:
(= '(:anything :goes :here) (filter (fn [x] true) '(:anything :goes :here)))
但不是这个?
(= (:anything :goes :here) (filter (fn [x] true) '(:anything :goes :here)))
或者
(= (:anything :goes :here) (filter (fn [x] true) (:anything :goes :here)))
甚至
(= '(:anything :goes :here) (filter (fn [x] true) (:anything :goes :here)))
是否有特殊原因要过滤的第二个 arg 是带引号的列表而不是普通列表?
user=> (filter (fn [x] true) (:abc :def :ghi))
IllegalArgumentException Don't know how to create ISeq from: clojure.lang.Keyword clojure.lang.RT.seqFrom (RT.java:505)
事实上,我仍然不确定列表何时也是函数调用。它似乎与引用有关。除非它们是空列表,否则是否需要引用所有“普通列表”?