我正在尝试一些Clojure,但现在对于" conj"的行为感到困惑。 见下面的exaples:
user=> (conj [1 2 3] 4)
[1 2 3 4]
以上是预期的。 但现在,如果我这样做:
user=> (conj (reverse [1 2 3]) 4)
(4 3 2 1)
返回(4 3 2 1)。但我想它本应该回来了(3 2 1 4)。那么,我在这里错过了什么?
答案 0 :(得分:7)
reverse
会返回一个列表。
(reverse [1 2 3])
=> (3 2 1)
conj
具有尽可能便宜地向集合添加内容的行为。对于向量,它会附加。对于列表,它是预先挂起的。
例如:
(conj '(1 2 3) 4)
=> (4 1 2 3)