In Clojure, le parentesi quadre sono una scorciatoia per i vettori che definiscono:Perché `vector` e` [...] `a volte si comportano in modo diverso in Clojure?
user=> (vector 'a 'b 'c)
[a b c]
user=> ['a 'b 'c]
[a b c]
The documentation page per vector
parla del lungo cammino e il breve modo di definire vettori.
Tuttavia, in defn
e doseq
sembra esserci una differenza.
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)
Che cosa spiega questa differenza? Le parentesi quadre hanno uno status speciale nel lettore o hanno una forma particolare?