在 Haskell 中实现以下目标的最惯用方法是什么:
foldl (+) 0 [1,2,3,4,5]
--> 15
或者它在 Ruby 中的等价物:
[1,2,3,4,5].inject(0) {|m,x| m + x}
#> 15
显然,Python 提供了reduce
函数,它是 fold 的实现,与上面完全相同,但是,我被告知“pythonic”的编程方式是避免lambda
使用术语和高阶函数,在可能的情况下更喜欢列表理解。因此,是否存在折叠列表的首选方法,或者 Python 中的类似列表的结构不是reduce
函数,或者是reduce
实现此目的的惯用方法?