簡體   English   中英

Clojure的reduce函數如何工作以反轉列表而不是向量

[英]How does Clojure's reduce function work to reverse a list but not a vector

我一直在尋找使用Clojure反轉集合而不使用reverse功能的方法,偶然發現了該解決方案。

(reduce conj '() [1 2 3 4 5]) => (5 4 3 2 1) 

我已經閱讀了有關Clojure api的關於reduce如何工作的信息,但是對於在這種情況下它如何工作仍然感到困惑。

我也發現是否要通過向量作為第三個參數而不是列表,即:

(reduce conj [] [1 2 3 4 5]) => [1 2 3 4 5]

我似乎找回了同樣的載體。

我想知道是否有人可以對我在這兩種情況下如何reduce工作做一個簡短的解釋。

我也發現這種方法也可以反轉向量:

(into () [1 2 3 4]) => (4 3 2 1) ; ???

doc字符串說:conj [oin]。 返回帶有“已添加” xs的新集合。 (組合項)返回(項目)。 取決於具體類型,“添加”可能發生在不同的“位置”。

對於矢量,添加的自然位置就是終點。 對於列表,添加的自然位置是最前面(與'cons'一樣)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM