在关于 summation 的维基百科页面上它说 Haskell 中的等效操作是使用 foldl。我的问题是:有什么理由说要使用 this 而不是 sum?一个比另一个更“纯粹”,还是没有真正的区别?
最佳答案
foldl
是一般tail-recursive减少功能。递归是在函数式编程语言中处理项目列表的常用思维方式,它提供了一种循环迭代的替代方法,通常更优雅。对于像 fold
这样的 reduce 函数, 尾递归实现 is very efficient .正如其他人所解释的,sum
那么只是 foldl (+) 0 l
的一个方便的助记符.
大概它在维基百科页面上的使用是为了说明通过尾递归求和的一般原则。但是自从 Haskell Prelude库包含 sum
,它更短且更容易理解,您应该在代码中使用它。
这是 nice discussion Haskell 的 fold
带有简单示例的函数,非常值得一读。
关于math - Haskell 中的求和符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1339152/