| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Polysemy.Time
Description
This package provides a Polysemy effect for interacting with the current time and sleeping, as well as some time-related data types and classes.
Synopsis
- module Polysemy.Time.Effect.Time
- type GhcTime = Time UTCTime Day
- interpretTimeGhc :: forall (r :: EffectRow). Member (Embed IO) r => InterpreterFor GhcTime r
- interpretTimeGhcAt :: forall (r :: EffectRow). Member (Embed IO) r => UTCTime -> InterpreterFor GhcTime r
- interpretTimeGhcConstant :: forall (r :: EffectRow). Member (Embed IO) r => UTCTime -> InterpreterFor GhcTime r
- interpretTimeGhcConstantNow :: forall (r :: EffectRow). Member (Embed IO) r => InterpreterFor GhcTime r
- convert :: (TimeUnit a, TimeUnit b) => a -> b
- class TimeUnit u
- newtype Days = Days {}
- newtype Hours = Hours {}
- newtype MicroSeconds = MicroSeconds {}
- newtype MilliSeconds = MilliSeconds {}
- newtype Minutes = Minutes {}
- newtype Months = Months {}
- newtype NanoSeconds = NanoSeconds {}
- newtype Seconds = Seconds {}
- newtype Weeks = Weeks {}
- newtype Years = Years {}
- class Calendar dt where
- type CalendarDate dt
- type CalendarTime dt
- mkDate :: Int64 -> Int64 -> Int64 -> CalendarDate dt
- mkTime :: Int64 -> Int64 -> Int64 -> CalendarTime dt
- mkDatetime :: Int64 -> Int64 -> Int64 -> Int64 -> Int64 -> Int64 -> dt
- class HasDay t where
- class HasHour t where
- class HasMinute t where
- class HasMonth t where
- class HasNanoSecond t where
- nanoSecond :: t -> NanoSeconds
- class HasSecond t where
- class HasYear t where
- measure :: forall dt t d u (r :: EffectRow) a. (TimeUnit u, Torsor dt u, Instant t dt, Member (Time t d) r) => Sem r a -> Sem r (u, a)
- while :: forall t d u (r :: EffectRow). (Member (Time t d) r, TimeUnit u) => u -> Sem r Bool -> Sem r ()
- untilJust :: forall t d u (r :: EffectRow) a. (Member (Time t d) r, TimeUnit u) => u -> Sem r (Maybe a) -> Sem r a
- loop :: forall t d u a (r :: EffectRow). (Member (Time t d) r, TimeUnit u) => u -> a -> (a -> Sem r a) -> Sem r ()
- loop_ :: forall t d u (r :: EffectRow). (Member (Time t d) r, TimeUnit u) => u -> Sem r () -> Sem r ()
- diff :: forall dt u i1 i2 diff. (TimeUnit diff, TimeUnit u, Torsor dt diff, Instant i1 dt, Instant i2 dt) => i1 -> i2 -> u
- since :: forall u t d dt diff (r :: EffectRow). (TimeUnit diff, TimeUnit u, Instant t dt, Torsor dt diff, Member (Time t d) r) => t -> Sem r u
Documentation
import Data.Time (UTCTime)
import Polysemy (Members, runM)
import Polysemy.Chronos (interpretTimeChronos)
import qualified Polysemy.Time as Time
import Polysemy.Time (MilliSeconds(MilliSeconds), Seconds(Seconds), Time, interpretTimeGhcAt, mkDatetime, year)
prog ::
Ord t =>
Member (Time t d) r =>
Sem r ()
prog = do
time1 <- Time.now
Time.sleep (MilliSeconds 10)
time2 <- Time.now
print (time1 < time2)
-- True
testTime :: UTCTime
testTime =
mkDatetime 1845 12 31 23 59 59
main :: IO ()
main =
runM do
interpretTimeChronos prog
interpretTimeGhcAt testTime do
Time.sleep (Seconds 1)
time <- Time.now
print (year time)
-- Years { unYear = 1846 }
module Polysemy.Time.Effect.Time
Interpreters
interpretTimeGhc :: forall (r :: EffectRow). Member (Embed IO) r => InterpreterFor GhcTime r Source #
interpretTimeGhcAt :: forall (r :: EffectRow). Member (Embed IO) r => UTCTime -> InterpreterFor GhcTime r Source #
interpretTimeGhcConstant :: forall (r :: EffectRow). Member (Embed IO) r => UTCTime -> InterpreterFor GhcTime r Source #
interpretTimeGhcConstantNow :: forall (r :: EffectRow). Member (Embed IO) r => InterpreterFor GhcTime r Source #
Data types
convert :: (TimeUnit a, TimeUnit b) => a -> b Source #
Convert between different time spans.
>>>convert (picosecondsToDiffTime 50000000) :: MicroSecondsMicroSeconds {unMicroSeconds = 50}
>>>convert (MilliSeconds 5) :: MicroSecondsMicroSeconds 5000
Types that represent an amount of time that can be converted to each other.
The methods are internal, the API function is convert.
Minimal complete definition
Instances
Days.
Instances
| FromJSON Days Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| ToJSON Days Source # | |||||
| Enum Days Source # | |||||
| Generic Days Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Associated Types
| |||||
| Num Days Source # | |||||
| Integral Days Source # | |||||
| Real Days Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toRational :: Days -> Rational # | |||||
| Show Days Source # | |||||
| Eq Days Source # | |||||
| Ord Days Source # | |||||
| TimeUnit Days Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods nanos :: NanoSeconds Source # toNanos :: Days -> NanoSeconds Source # fromNanos :: NanoSeconds -> Days Source # | |||||
| Additive Days Source # | |||||
| type Rep Days Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
Hours.
Instances
| FromJSON Hours Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| ToJSON Hours Source # | |||||
| Enum Hours Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| Generic Hours Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Associated Types
| |||||
| Num Hours Source # | |||||
| Integral Hours Source # | |||||
| Real Hours Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toRational :: Hours -> Rational # | |||||
| Show Hours Source # | |||||
| Eq Hours Source # | |||||
| Ord Hours Source # | |||||
| TimeUnit Hours Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods nanos :: NanoSeconds Source # toNanos :: Hours -> NanoSeconds Source # fromNanos :: NanoSeconds -> Hours Source # | |||||
| Additive Hours Source # | |||||
| type Rep Hours Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
newtype MicroSeconds Source #
Microseconds.
Constructors
| MicroSeconds | |
Fields | |
Instances
newtype MilliSeconds Source #
Milliseconds.
Constructors
| MilliSeconds | |
Fields | |
Instances
| FromJSON MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| ToJSON MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toJSON :: MilliSeconds -> Value # toEncoding :: MilliSeconds -> Encoding # toJSONList :: [MilliSeconds] -> Value # toEncodingList :: [MilliSeconds] -> Encoding # omitField :: MilliSeconds -> Bool # | |||||
| Enum MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods succ :: MilliSeconds -> MilliSeconds # pred :: MilliSeconds -> MilliSeconds # toEnum :: Int -> MilliSeconds # fromEnum :: MilliSeconds -> Int # enumFrom :: MilliSeconds -> [MilliSeconds] # enumFromThen :: MilliSeconds -> MilliSeconds -> [MilliSeconds] # enumFromTo :: MilliSeconds -> MilliSeconds -> [MilliSeconds] # enumFromThenTo :: MilliSeconds -> MilliSeconds -> MilliSeconds -> [MilliSeconds] # | |||||
| Generic MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Associated Types
| |||||
| Num MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods (+) :: MilliSeconds -> MilliSeconds -> MilliSeconds # (-) :: MilliSeconds -> MilliSeconds -> MilliSeconds # (*) :: MilliSeconds -> MilliSeconds -> MilliSeconds # negate :: MilliSeconds -> MilliSeconds # abs :: MilliSeconds -> MilliSeconds # signum :: MilliSeconds -> MilliSeconds # fromInteger :: Integer -> MilliSeconds # | |||||
| Fractional MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods (/) :: MilliSeconds -> MilliSeconds -> MilliSeconds # recip :: MilliSeconds -> MilliSeconds # fromRational :: Rational -> MilliSeconds # | |||||
| Integral MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods quot :: MilliSeconds -> MilliSeconds -> MilliSeconds # rem :: MilliSeconds -> MilliSeconds -> MilliSeconds # div :: MilliSeconds -> MilliSeconds -> MilliSeconds # mod :: MilliSeconds -> MilliSeconds -> MilliSeconds # quotRem :: MilliSeconds -> MilliSeconds -> (MilliSeconds, MilliSeconds) # divMod :: MilliSeconds -> MilliSeconds -> (MilliSeconds, MilliSeconds) # toInteger :: MilliSeconds -> Integer # | |||||
| Real MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toRational :: MilliSeconds -> Rational # | |||||
| Show MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods showsPrec :: Int -> MilliSeconds -> ShowS # show :: MilliSeconds -> String # showList :: [MilliSeconds] -> ShowS # | |||||
| Eq MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| Ord MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods compare :: MilliSeconds -> MilliSeconds -> Ordering # (<) :: MilliSeconds -> MilliSeconds -> Bool # (<=) :: MilliSeconds -> MilliSeconds -> Bool # (>) :: MilliSeconds -> MilliSeconds -> Bool # (>=) :: MilliSeconds -> MilliSeconds -> Bool # max :: MilliSeconds -> MilliSeconds -> MilliSeconds # min :: MilliSeconds -> MilliSeconds -> MilliSeconds # | |||||
| TimeUnit MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods nanos :: NanoSeconds Source # toNanos :: MilliSeconds -> NanoSeconds Source # fromNanos :: NanoSeconds -> MilliSeconds Source # | |||||
| Additive MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods zero :: MilliSeconds # invert :: MilliSeconds -> MilliSeconds # plus :: MilliSeconds -> MilliSeconds -> MilliSeconds # minus :: MilliSeconds -> MilliSeconds -> MilliSeconds # | |||||
| type Rep MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit type Rep MilliSeconds = D1 ('MetaData "MilliSeconds" "Polysemy.Time.Data.TimeUnit" "polysemy-time-0.7.0.1-JuShpFGkFIKBk6OfIeQaxf" 'True) (C1 ('MetaCons "MilliSeconds" 'PrefixI 'True) (S1 ('MetaSel ('Just "unMilliSeconds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64))) | |||||
Minutes.
Instances
| FromJSON Minutes Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| ToJSON Minutes Source # | |||||
| Enum Minutes Source # | |||||
| Generic Minutes Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Associated Types
| |||||
| Num Minutes Source # | |||||
| Integral Minutes Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| Real Minutes Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toRational :: Minutes -> Rational # | |||||
| Show Minutes Source # | |||||
| Eq Minutes Source # | |||||
| Ord Minutes Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| TimeUnit Minutes Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods nanos :: NanoSeconds Source # toNanos :: Minutes -> NanoSeconds Source # fromNanos :: NanoSeconds -> Minutes Source # | |||||
| Additive Minutes Source # | |||||
| type Rep Minutes Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
Months.
Instances
| FromJSON Months Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| ToJSON Months Source # | |||||
| Enum Months Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| Generic Months Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Associated Types
| |||||
| Num Months Source # | |||||
| Integral Months Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| Real Months Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toRational :: Months -> Rational # | |||||
| Show Months Source # | |||||
| Eq Months Source # | |||||
| Ord Months Source # | |||||
| Additive Months Source # | |||||
| type Rep Months Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
newtype NanoSeconds Source #
Nanoseconds. This is the base unit for all conversions.
Constructors
| NanoSeconds | |
Fields | |
Instances
| FromJSON NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| ToJSON NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toJSON :: NanoSeconds -> Value # toEncoding :: NanoSeconds -> Encoding # toJSONList :: [NanoSeconds] -> Value # toEncodingList :: [NanoSeconds] -> Encoding # omitField :: NanoSeconds -> Bool # | |||||
| Enum NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods succ :: NanoSeconds -> NanoSeconds # pred :: NanoSeconds -> NanoSeconds # toEnum :: Int -> NanoSeconds # fromEnum :: NanoSeconds -> Int # enumFrom :: NanoSeconds -> [NanoSeconds] # enumFromThen :: NanoSeconds -> NanoSeconds -> [NanoSeconds] # enumFromTo :: NanoSeconds -> NanoSeconds -> [NanoSeconds] # enumFromThenTo :: NanoSeconds -> NanoSeconds -> NanoSeconds -> [NanoSeconds] # | |||||
| Generic NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Associated Types
| |||||
| Num NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods (+) :: NanoSeconds -> NanoSeconds -> NanoSeconds # (-) :: NanoSeconds -> NanoSeconds -> NanoSeconds # (*) :: NanoSeconds -> NanoSeconds -> NanoSeconds # negate :: NanoSeconds -> NanoSeconds # abs :: NanoSeconds -> NanoSeconds # signum :: NanoSeconds -> NanoSeconds # fromInteger :: Integer -> NanoSeconds # | |||||
| Fractional NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods (/) :: NanoSeconds -> NanoSeconds -> NanoSeconds # recip :: NanoSeconds -> NanoSeconds # fromRational :: Rational -> NanoSeconds # | |||||
| Integral NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods quot :: NanoSeconds -> NanoSeconds -> NanoSeconds # rem :: NanoSeconds -> NanoSeconds -> NanoSeconds # div :: NanoSeconds -> NanoSeconds -> NanoSeconds # mod :: NanoSeconds -> NanoSeconds -> NanoSeconds # quotRem :: NanoSeconds -> NanoSeconds -> (NanoSeconds, NanoSeconds) # divMod :: NanoSeconds -> NanoSeconds -> (NanoSeconds, NanoSeconds) # toInteger :: NanoSeconds -> Integer # | |||||
| Real NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toRational :: NanoSeconds -> Rational # | |||||
| Show NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods showsPrec :: Int -> NanoSeconds -> ShowS # show :: NanoSeconds -> String # showList :: [NanoSeconds] -> ShowS # | |||||
| Eq NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| Ord NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods compare :: NanoSeconds -> NanoSeconds -> Ordering # (<) :: NanoSeconds -> NanoSeconds -> Bool # (<=) :: NanoSeconds -> NanoSeconds -> Bool # (>) :: NanoSeconds -> NanoSeconds -> Bool # (>=) :: NanoSeconds -> NanoSeconds -> Bool # max :: NanoSeconds -> NanoSeconds -> NanoSeconds # min :: NanoSeconds -> NanoSeconds -> NanoSeconds # | |||||
| TimeUnit NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods nanos :: NanoSeconds Source # toNanos :: NanoSeconds -> NanoSeconds Source # fromNanos :: NanoSeconds -> NanoSeconds Source # | |||||
| Additive NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods zero :: NanoSeconds # invert :: NanoSeconds -> NanoSeconds # plus :: NanoSeconds -> NanoSeconds -> NanoSeconds # minus :: NanoSeconds -> NanoSeconds -> NanoSeconds # | |||||
| Scaling NanoSeconds Int64 Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods scale :: Int64 -> NanoSeconds -> NanoSeconds # | |||||
| type Rep NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit type Rep NanoSeconds = D1 ('MetaData "NanoSeconds" "Polysemy.Time.Data.TimeUnit" "polysemy-time-0.7.0.1-JuShpFGkFIKBk6OfIeQaxf" 'True) (C1 ('MetaCons "NanoSeconds" 'PrefixI 'True) (S1 ('MetaSel ('Just "unNanoSeconds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64))) | |||||
Seconds.
Instances
| FromJSON Seconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| ToJSON Seconds Source # | |||||
| Enum Seconds Source # | |||||
| Generic Seconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Associated Types
| |||||
| Num Seconds Source # | |||||
| Integral Seconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| Real Seconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toRational :: Seconds -> Rational # | |||||
| Show Seconds Source # | |||||
| Eq Seconds Source # | |||||
| Ord Seconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| TimeUnit Seconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods nanos :: NanoSeconds Source # toNanos :: Seconds -> NanoSeconds Source # fromNanos :: NanoSeconds -> Seconds Source # | |||||
| Additive Seconds Source # | |||||
| type Rep Seconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
Weeks.
Instances
| FromJSON Weeks Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| ToJSON Weeks Source # | |||||
| Enum Weeks Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| Generic Weeks Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Associated Types
| |||||
| Num Weeks Source # | |||||
| Integral Weeks Source # | |||||
| Real Weeks Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toRational :: Weeks -> Rational # | |||||
| Show Weeks Source # | |||||
| Eq Weeks Source # | |||||
| Ord Weeks Source # | |||||
| TimeUnit Weeks Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods nanos :: NanoSeconds Source # toNanos :: Weeks -> NanoSeconds Source # fromNanos :: NanoSeconds -> Weeks Source # | |||||
| Additive Weeks Source # | |||||
| type Rep Weeks Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
Years.
Instances
| FromJSON Years Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| ToJSON Years Source # | |||||
| Enum Years Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
| Generic Years Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Associated Types
| |||||
| Num Years Source # | |||||
| Integral Years Source # | |||||
| Real Years Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toRational :: Years -> Rational # | |||||
| Show Years Source # | |||||
| Eq Years Source # | |||||
| Ord Years Source # | |||||
| Additive Years Source # | |||||
| type Rep Years Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit | |||||
class Calendar dt where Source #
Construct datetimes, dates or times from integers.
Methods
mkDate :: Int64 -> Int64 -> Int64 -> CalendarDate dt Source #
mkTime :: Int64 -> Int64 -> Int64 -> CalendarTime dt Source #
mkDatetime :: Int64 -> Int64 -> Int64 -> Int64 -> Int64 -> Int64 -> dt Source #
Instances
| Calendar UTCTime Source # | |||||||||
Defined in Polysemy.Time.Calendar Associated Types
| |||||||||
Extract the day component from a date.
class HasNanoSecond t where Source #
Extract the nanosecond component from a datetime or time.
Methods
nanoSecond :: t -> NanoSeconds Source #
Instances
| HasNanoSecond DiffTime Source # | |
Defined in Polysemy.Time.Calendar Methods nanoSecond :: DiffTime -> NanoSeconds Source # | |
| HasNanoSecond TimeOfDay Source # | |
Defined in Polysemy.Time.Calendar Methods nanoSecond :: TimeOfDay -> NanoSeconds Source # | |
Combinators
measure :: forall dt t d u (r :: EffectRow) a. (TimeUnit u, Torsor dt u, Instant t dt, Member (Time t d) r) => Sem r a -> Sem r (u, a) Source #
while :: forall t d u (r :: EffectRow). (Member (Time t d) r, TimeUnit u) => u -> Sem r Bool -> Sem r () Source #
Repeatedly run the action, sleeping for interval between executions.
Stops when action returns False.
untilJust :: forall t d u (r :: EffectRow) a. (Member (Time t d) r, TimeUnit u) => u -> Sem r (Maybe a) -> Sem r a Source #
Repeatedly run the action, sleeping for interval between executions.
Stops when action returns Just a, returning the contained a.
loop :: forall t d u a (r :: EffectRow). (Member (Time t d) r, TimeUnit u) => u -> a -> (a -> Sem r a) -> Sem r () Source #
Repeatedly run the action, sleeping for interval between executions.
The result of action is passed back to it for the next run, starting with initial.
loop_ :: forall t d u (r :: EffectRow). (Member (Time t d) r, TimeUnit u) => u -> Sem r () -> Sem r () Source #
Repeatedly run the action, sleeping for interval between executions.