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)