module Control.Concurrent.Delay
(delayMicrosecs
,delayMillisecs
,delaySeconds
,delayMinutes
,delayHours
,delayDays
) where
import Control.Concurrent
delayMicrosecs :: Integer -> IO ()
delayMicrosecs microsecs
| microsecs <= fromIntegral maxMicrosecs = threadDelay (fromIntegral microsecs)
| otherwise = do
threadDelay maxMicrosecs
delayMicrosecs (microsecs fromIntegral maxMicrosecs)
where maxMicrosecs = maxBound :: Int
delayMillisecs :: Integer -> IO ()
delayMillisecs = delayMicrosecs . (*1000)
delaySeconds :: Integer -> IO ()
delaySeconds = delayMillisecs . (* 1000)
delayMinutes :: Integer -> IO ()
delayMinutes = delaySeconds . (*60)
delayHours :: Integer -> IO ()
delayHours = delayMinutes . (*60)
delayDays :: Integer -> IO ()
delayDays = delayHours . (*24)