math - Haskell 中的求和符号

标签 math haskell recursion sum

在关于 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/

相关文章:

haskell - 丑陋的 double - 为什么是 2.9000000000000004 而不是 2.9?

javascript - 将 JavaScript 对象减少为格式化对象数组

javascript - 如何得到从 1 到给定数字的所有数字相加的倒数?

arrays - 查找数组中总和为零的所有数字

haskell - 调试 haskell 代码的好方法是什么?

haskell - Haskell 中 where 的误用

无论数组大小如何,Java 多数组递归

python - 通过实现堆排序的递归按值或引用传递

c++ - 如何在 3D 中放置一个点以使其形成一定的角度?

java - 埃拉托斯特尼筛法 - 实现返回一些非质数值?