在这种情况下,能够工作的代码在数据层面上几乎没有意义。
Conj可以将两个元素的向量连接到映射上,具有精确的语义。将向量列表连接到映射上不应该工作。
换句话说,(conj {} [[:a 1] [:b 2]]) 是可以接受的,因为我们连接了两个向量的向量,并得到 {[:a 1] [:b 2]} 作为结果。
然而,(conj {} '([:a 1] [:b 2])) 是不应该接受的,因为它不是一个向量。
将 just '([:d 4]) 连接到映射上在逻辑上毫无意义,不应该工作,但在CLJS中却可以工作。尤其是在 conjing [[:d 4]] 不工作的情况下。
这几乎就像是CLJS不在乎它是元素的列表还是仅仅是一系列元素。
(conj {} [[:a 1] [:b 2]] '([:c 3] [:d 4]))
=> {[:a 1] [:b 2], :c 3, :d 4}