packages feed

polysemy-time-0.2.0.2: lib/Polysemy/Time/Sleep.hs

{-# options_haddock prune, hide #-}

-- |Helpers for sleeping, Internal
module Polysemy.Time.Sleep where

import Control.Concurrent (threadDelay)

import Polysemy.Time.Data.TimeUnit (MicroSeconds (MicroSeconds), TimeUnit, convert)

uSleep ::
  Member (Embed IO) r =>
  MicroSeconds ->
  Sem r ()
uSleep (MicroSeconds 0) =
  unit
uSleep (MicroSeconds us) =
  embed (threadDelay (fromIntegral us))

tSleep ::
  Member (Embed IO) r =>
  TimeUnit t =>
  t ->
  Sem r ()
tSleep =
  uSleep . convert