mapAccumL' f !s (x:xs) =  (s'',y:ys) 
    where 
      !(!s', !y) = f s x 
      !(!s'', !ys) = s' `seq` mapAccumL' f s' xs 
mapAccumL' f !s (x:xs) =  (s'',y:ys) 
    where 
      !(!s', !y) = f s x 
      !(!s'', !ys) = s' `seq` mapAccumL' f s' xs 
mapAccumL' f !s (x:xs) =  (s'',y:ys) 
    where 
      !(!s', !y) = f s x 
      !(!s'', !ys) = s' `seq` mapAccumL' f s' xs 