Haskell中的求和符号

Mat*_*tyW 6 math recursion haskell sum

在关于求和的维基百科页面上,它说Haskell中的等效操作是使用foldl.我的问题是:有没有理由说它用这个而不是总和?是一个比另一个更"纯粹",还是没有真正的区别?

ire*_*ses 11

foldl是一般的尾递归递减函数.递归是思考在函数式编程语言中操作项列表的常用方法,并提供了循环迭代的替代方法,通常更加优雅.在类似reduce函数的情况下fold,尾递归实现非常有效.正如其他人所解释的那样,sum这只是一个方便的助记符foldl (+) 0 l.

据推测,它在维基百科页面上的使用是为了说明通过尾递归求和的一般原理.但是由于Haskell Prelude库包含sum更短且更明显的理解,因此您应该在代码中使用它.

这是一个很好的讨论 Haskell fold函数的简单例子,非常值得一读.