This is a lightweight package built on top of the async package providing easy to use periodic timers. This can be used for executing IO actions periodically.
let conf = defaultTimerConf & timerConfSetInitDelay 500 -- 500 ms & timerConfSetInterval 1000 -- 1 s withAsyncTimer conf $ \ timer -> do forM_ [1..10] $ \_ -> do timerWait timer putStrLn "Tick"