我正在寻找在不使用reverse
功能的情况下使用Clojure来反转集合的方法,并偶然发现了这个解决方案。
(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) ; ???
答案 0 :(得分:5)
doc字符串说:conj [oin]。返回添加了xs'的新集合。 (conj nil item)返回(item)。添加'可能发生在不同的地方'取决于具体类型。
对于矢量,添加的自然位置是结束。对于列表,添加的自然位置是前面(与' cons'一样)。