Каков самый идиоматический способ добиться в 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
идиоматическим способом достижения этого?