Clojure 如何反向减少,以便从最后一个索引开始迭代到0索引?
我希望reduce调用中的匿名函数能够以相反的顺序对输入列表进行操作。在javascript中有一个名为.reduceRight()的函数,clojure中的等效函数是什么 您希望从最后一个索引开始迭代,一直迭代到0索引。这表明你在处理向量之类的东西。如果是这样,您可以将函数应用于它,这将在恒定时间内产生其参数的反向序列Clojure 如何反向减少,以便从最后一个索引开始迭代到0索引?,clojure,Clojure,我希望reduce调用中的匿名函数能够以相反的顺序对输入列表进行操作。在javascript中有一个名为.reduceRight()的函数,clojure中的等效函数是什么 您希望从最后一个索引开始迭代,一直迭代到0索引。这表明你在处理向量之类的东西。如果是这样,您可以将函数应用于它,这将在恒定时间内产生其参数的反向序列 Clojure的向量具有java类PersistentVector。这实现了一个名为可逆的接口。这就是rseq函数要查找的内容 先颠倒顺序是不可行的吗?取决于你减少的顺序,这可
Clojure的向量具有java类
PersistentVector
。这实现了一个名为可逆的接口。这就是rseq
函数要查找的内容 先颠倒顺序是不可行的吗?取决于你减少的顺序,这可能同样有效。只有具有恒定随机访问的序列才能有效地进行右归约。Clojure编码,但在内部它会在归约之前反转列表。请参阅此答案,以了解Clojure中的foldl
和foldr
示例,后者可能更接近您要查找的内容:只需反转序列(defn reduce right[f coll](reduce f(reverse coll)))
(如果需要,可以添加val
)@Carcigenicate您的评论适用于任何reduce right实现。这不是与clojure相关的约束。。。所以我怀疑这是个问题。