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"