Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure conj的怪异行为_Clojure - Fatal编程技术网

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具有尽可能便宜

我试过一些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
具有尽可能便宜地向集合中添加内容的行为。对于向量,它是附加的。对于列表,它是预挂起的

例如:

(conj '(1 2 3) 4)
=> (4 1 2 3)
从文件中可以看出:“根据混凝土类型,‘添加’可能发生在不同的‘位置’。”