Ray*_*oal 6 syntax vector clojure syntactic-sugar
在Clojure中,方括号是定义向量的简写:
user=> (vector 'a 'b 'c)
[a b c]
user=> ['a 'b 'c]
[a b c]
Run Code Online (Sandbox Code Playgroud)
该文档页面的vector讲的很长的路要走,并确定载体的一小段路.
然而,在defn和doseq那里似乎存在差异.
user=> (doseq [x (range 1 4)] (printf "%d\n" x))
1
2
3
nil
user=> (doseq (vector 'x (range 1 4)) (printf "%d\n" x))
IllegalArgumentException doseq requires a vector for its binding in user:1 clojure.core/doseq (core.clj:2935)
Run Code Online (Sandbox Code Playgroud)
这种差异的原因是什么?方括号在读者中是否具有特殊地位,或者它们是否具有特定的形式?