Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不创建seq的情况下迭代clojure教育?_Clojure_Iteration - Fatal编程技术网

如何在不创建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
的实例上运行,其中