packages feed

estreps-0.1: src/Util.hs

module Util where

import System.IO
import System.IO.Unsafe

countIO step msg xs = sequence $ map unsafeInterleaveIO $ ct 0 xs
   where ct s xs = let (a,b) = splitAt (step-1) xs
                       next  = s+step
                       output c = hPutStr stderr ((take (length (show c)+2+length msg) $ repeat ' ')++'\r':msg++show c) >> hFlush stderr
                   in if null b then map return a ++ []
                      else map return a ++ [output next >> return (head b)]
                           ++ ct next (tail b)