骗子的怪异行为

时间:2014-04-04 03:23:25

标签: clojure

我正在尝试一些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)。那么,我在这里错过了什么?

1 个答案:

答案 0 :(得分:7)

reverse会返回一个列表。

(reverse [1 2 3])
=> (3 2 1)

conj具有尽可能便宜地向集合添加内容的行为。对于向量,它会附加。对于列表,它是预先挂起的。

例如:

(conj '(1 2 3) 4)
=> (4 1 2 3)