Clojure conj的怪异行为
我试过一些Clojure,但现在对“conj”的行为感到困惑。 见以下示例:Clojure conj的怪异行为,clojure,Clojure,我试过一些Clojure,但现在对“conj”的行为感到困惑。 见以下示例: user=> (conj [1 2 3] 4) [1 2 3 4] 以上是预期的。 但现在,如果我做以下事情: user=> (conj (reverse [1 2 3]) 4) (4 3 2 1) 它返回(4321)。但我想它应该已经回来了(3 2 1 4)。那么,我在这里遗漏了什么呢?reverse返回一个列表 (reverse [1 2 3]) => (3 2 1) conj具有尽可能便宜
user=> (conj [1 2 3] 4)
[1 2 3 4]
以上是预期的。
但现在,如果我做以下事情:
user=> (conj (reverse [1 2 3]) 4)
(4 3 2 1)
它返回(4321)。但我想它应该已经回来了(3 2 1 4)。那么,我在这里遗漏了什么呢?
reverse
返回一个列表
(reverse [1 2 3])
=> (3 2 1)
conj
具有尽可能便宜地向集合中添加内容的行为。对于向量,它是附加的。对于列表,它是预挂起的
例如:
(conj '(1 2 3) 4)
=> (4 1 2 3)
从文件中可以看出:“根据混凝土类型,‘添加’可能发生在不同的‘位置’。”