在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
使用的循环更有效地减少该集合)。您是否检查了其来源:?