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