【发布时间】:2015-12-09 23:37:31
【问题描述】:
在 Clojure 中,方括号是定义向量的简写:
user=> (vector 'a 'b 'c)
[a b c]
user=> ['a 'b 'c]
[a b c]
The documentation page for 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)
造成这种差异的原因是什么?方括号是否在读者中被赋予了特殊地位,或者它们是某种特定形式的糖?
【问题讨论】:
标签: vector syntax clojure syntactic-sugar