Monday, April 30, 2012

What is the 'pythonic' equivalent to the 'fold' function from functional programming?

What is the most idiomatic way to achieve something like the following, in Haskell:



foldl (+) 0 [1,2,3,4,5]
--> 15


Or its equivalent in Ruby:



[1,2,3,4,5].inject(0) {|m,x| m + x}
#> 15


Obviously, Python provides the 'reduce' function, which is an implementation of fold, exactly as above, however, I was told that the 'pythonic' way of programming was to avoid lambda terms and higher-order functions, preferring list-comprehensions where possible. Therefore, is there a preferred way of folding a list, or list-like structure in Python that isn't the reduce function, or is reduce the idiomatic way of achieving this?





No comments:

Post a Comment