如何在不创建seq的情况下迭代clojure教育?
为了这个问题,让我们假设我创建了以下教育如何在不创建seq的情况下迭代clojure教育?,clojure,iteration,Clojure,Iteration,为了这个问题,让我们假设我创建了以下教育 (def xform (map inc)) (def input [1 2 3]) (def educt (eduction xform input)) 现在我想把导出传递给某个函数,该函数可以进行某种缩减。我想通过导出,而不是变换和输入的原因是我不想将变换和输入暴露到该函数中。如果我这样做了,该函数可以简单地执行(transducexformfinit输入)。但正如我不知道的那样,这个函数留下了一个不能与transduce一起使用的导出 我知道我可以
(def xform (map inc))
(def input [1 2 3])
(def educt (eduction xform input))
现在我想把导出
传递给某个函数,该函数可以进行某种缩减。我想通过导出
,而不是变换
和输入
的原因是我不想将变换
和输入
暴露到该函数中。如果我这样做了,该函数可以简单地执行(transducexformfinit输入)
。但正如我不知道的那样,这个函数留下了一个不能与transduce
一起使用的导出
我知道我可以在导出中使用doseq
,但我相信这将创建一个seq-及其在对象实例化和缓存使用方面的所有开销
那么我怎样才能有效地、惯用地重复一次教育?
由于教育实现了java.lang.Iterable
,这个问题可能概括为:
如何迭代
java.lang.Iterable
而不创建seq?
可用于此操作
它在IReduceInit
的实例上运行,其中