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これを達成する慣用的な方法はありますか?
sum。いくつかの異なるタイプの例を提供したい場合があります。
                sum()これを使用すると、実際には限られた機能が提供されます。たとえばsum([[a], [b, c, d], [e, f]], [])戻ります[a, b, c, d, e, f]。
                +が、リストでは、時間とメモリの両方で線形時間操作が行われ、呼び出し全体が二次式になります。使用list(itertools.chain.from_iterable([a], [b,c,d],[e,f],[]])は全体的に線形です-そして、それを一度だけ繰り返す必要がある場合は、呼び出しをドロップしてlist、メモリの観点からそれを一定にすることができます。
                
sum十分ではありませんか?