foldl' でもまだループごとに未評価の式(マップへのインサート)が溜まってる模様
(Mapをつくる関数は無事に終了するもののその後Mapを評価しようとするとスタックオーバーフローに)

↓最終的にこんなんつかったらどうにかなりました

import Control.Parallel.Strategies

instance NFData (DList a) where rnf = \_ -> ()

foldlRNF f acc xs = helper acc xs
 where
   helper a [] = a
   helper a (x:xs) = helper a' xs

   where a' = f a x `using` rnf