W Clojure nawiasy kwadratowe są zapisem skrótowym do wektorów określających:Dlaczego "wektor" i "[...]" czasami zachowują się inaczej w Clojure?
user=> (vector 'a 'b 'c)
[a b c]
user=> ['a 'b 'c]
[a b c]
The documentation page do vector
mówi się o długą drogę i krótkiej drodze określania wektorów.
Jednak w defn
i doseq
wydaje się, że istnieje różnica.
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)
Co odpowiada za tę różnicę? Czy nawiasy kwadratowe mają specjalny status w czytniku, czy też mają jakąś szczególną postać?