scanl的文档说“此功能会融合”。 fuse 到底意味着什么?这不好吗?
答案 0 :(得分:13)
http://www.haskell.org/haskellwiki/Short_cut_fusion
(以及更多信息:http://www.haskell.org/haskellwiki/Correctness_of_short_cut_fusion)
如果一个功能融合,这是一件好事。这意味着一系列函数可以合并为一个函数,这意味着更少的分配,更少的堆栈和更快的速度!真棒!
这是一个微不足道的融合:map f . map g
----> map (f . g)
。
如上所述,还有许多其他标准库的规则也适用。
答案 1 :(得分:3)
它有点像协同程序 - 如果你编写两个函数,它们可以在融合流上执行,而不是首先完全“评估”,然后是第二个。
答案 2 :(得分:2)
我认为它指的是流融合优化技术,并声明它们可以应用于该功能。实质上,如果您有两个转换序列的函数,优化器会将转换合并在一起,因此只需要一次遍历。
简而言之,不,这不错。恰恰相反!