[英]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.