Каков самый идиоматический способ добиться в 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, точно так же, как указано выше, однако мне сказали, что "питонический" способ программирования состоит в том, чтобы избежать терминов lambda и функций более высокого порядка, предпочитая, если это возможно, понимание списков. Поэтому существует ли предпочтительный способ сгибания списка или структуры списка в Python, которая не является функцией reduce, или является reduce идиоматическим способом достижения этого?