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
用語と高階関数を避け、可能な場合はリスト内包表記を優先することであると言われました。reduce
したがって、関数ではないPythonのリストまたはリストのような構造を折りたたむ好ましい方法はありますか、それともreduce
これを達成する慣用的な方法ですか?