suspend-0.1.0.0: src/Control/Concurrent/Delay.hs
module Control.Concurrent.Delay
(
-- * Delay
Delay(Delay)
, usDelay
, msDelay
, sDelay
, mDelay
, hDelay
, (.+.)
) where
------------------------------------------------------------------------------
import Data.Int (Int64)
------------------------------------------------------------------------------
------------------------------------------------------------------------------
-- | DELAY
--
-- TODO:
-- * Add overflow checks.
-- | Type representing delay in microseconds.
newtype Delay = Delay Int64
-- | Sums two delays.
(.+.) :: Delay -> Delay -> Delay
(Delay x) .+. (Delay y) = Delay $ x + y
{-# INLINE (.+.) #-}
infixl 6 .+.
-- | Delay in microseconds.
usDelay :: Int64 -> Delay
usDelay = Delay
{-# INLINE usDelay #-}
-- | Delay in milliseconds.
msDelay :: Int64 -> Delay
msDelay = Delay . (1000 *)
{-# INLINE msDelay #-}
-- | Delay in seconds.
sDelay :: Int64 -> Delay
sDelay = Delay . (1000 * 1000 *)
{-# INLINE sDelay #-}
-- | Delay in minutes.
mDelay :: Int64 -> Delay
mDelay = Delay . (1000 * 1000 * 60 *)
{-# INLINE mDelay #-}
-- | Delay in hours.
hDelay :: Int64 -> Delay
hDelay = Delay . (1000 * 1000 * 60 * 24 *)
{-# INLINE hDelay #-}