- 482 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 16:52:05 ]
- >>480
処理系と最適化オプションに依る 素朴な遅延評価だと前者 sum [0..100000] ==> foldl (+) 0 [0..100000] ==> foldl (+) 0 (0:[0+1..100000]) ==> foldl (+) (0+0) [0+1..100000] ==> foldl (+) (0+0) (1:[1+1..100000]) ==> foldl (+) (0+0+1) [1+1..100000] … ==> foldl (+) (0+0+1+2+...+100000) [] ==> 0+0+1+2+...+100000 … だけど、例えばghc-6.8.2で-O2だと、Integer用に特殊化されたsumの実装が使われて、 foldlの蓄積引数が積極評価されるので後者になる
|

|