GHC だと、USE_REPORT_PRELUDE を定義しない限り、
sum の定義は次のようになっている。

sum l = sum' l 0
where
 sum' []   a = a
 sum' (x:xs) a = sum' xs (a+x)

これって、最後に sum' [] a の a を評価するまで、
(a+x) の計算がどんどん遅延して長〜い加算計算の羅列になったりするの?

もしそうなら、seq a $ sum' xs (a+x) で解消できる?