3
我正在嘗試一些Clojure,但現在對「連詞」的行爲感到困惑。 請參閱下面的示例:連詞的奇怪行爲
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)。那麼,我在這裏錯過了什麼?
我正在嘗試一些Clojure,但現在對「連詞」的行爲感到困惑。 請參閱下面的示例:連詞的奇怪行爲
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)。那麼,我在這裏錯過了什麼?
reverse
返回一個列表。
(reverse [1 2 3])
=> (3 2 1)
conj
具有儘可能便宜地向集合添加內容的行爲。對於矢量,它將被追加。對於列表,它會預先等待。
例如:
(conj '(1 2 3) 4)
=> (4 1 2 3)
從文檔[用Clojure的序列不一致?]:HTTP ://clojuredocs.org/clojure_core/clojure.core/conj「根據具體的類型,'addition'可能會在不同的'地點'發生。」 「。 –
的可能重複(http://stackoverflow.com/questions/7437833/inconsistency-with-clojures-sequences) – amalloy