在Clojure中完成函数的作用是什么?

在Clojure中完成函数的作用是什么?,clojure,transducer,Clojure,Transducer,我遇到了在上完成功能的,但目前没有文档 你能提供一些例子吗?补全用于增强二进制归约函数,该函数可能没有一元重载和一元“补全”算术 hosted@解释了转换函数的空、一元和二进制重载的用途,并在“创建传感器”一节中提供了一个很好的示例,说明了一元“完成”算术何时有用(所使用的示例是分区所有,它使用完成生成最终的输出块) 简言之,在消耗所有输入后使用完成算术,并使转换函数有机会执行任何工作,以刷新转换过程可能维护的任何缓冲区(如将所有分区的情况),将任何最终转换应用于输出(见下面的示例)等“转换功能

我遇到了在上完成功能的
,但目前没有文档


你能提供一些例子吗?

补全
用于增强二进制归约函数,该函数可能没有一元重载和一元“补全”算术

hosted@解释了转换函数的空、一元和二进制重载的用途,并在“创建传感器”一节中提供了一个很好的示例,说明了一元“完成”算术何时有用(所使用的示例是
分区所有
,它使用完成生成最终的输出块)

简言之,在消耗所有输入后使用完成算术,并使转换函数有机会执行任何工作,以刷新转换过程可能维护的任何缓冲区(如
将所有
分区的情况),将任何最终转换应用于输出(见下面的示例)等“转换功能”我是指实际传递给
转换
(或
导出
或任何设置转换过程的类似功能)的转换功能以及所有包装传感器

有关与非平凡完成函数一起使用的
completing
的有趣示例,请查看christophegrand的:
net.cgrand.xforms.rfs/str
是一个
transduce
-友好版本的
clojure.core/str
transduce
调用中使用时,它将在线性时间内建立字符串。(相反,
clojure.core/str
,如果在
reduce
/
transduce
中使用,将在每一步创建一个新字符串,并因此在O(n²)时间内运行。1)它使用
完成
将在引擎盖下使用的
StringBuilder
转换为字符串,一旦它消耗了所有输入


但是,请注意,
clojure.core/str
如果与
apply
一起使用,则会以线性时间运行–它在引擎盖下使用
StringBuilder
,就像
net.cgrand.xforms.rfs/str
一样。有时使用
转换
友好版本仍然很方便(用于传感器,或在高阶环境中使用,或可能出于性能原因,在处理大型集合时,可以比通过
first
/
next
str
使用的循环更有效地减少该集合)。

您是否检查了其来源:?