| 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
- newtype Hours = Hours {}
- newtype Minutes = Minutes {}
- newtype Seconds = Seconds {}
- class TimeUnit u
- newtype Days = Days {}
- newtype MicroSeconds = MicroSeconds {}
- newtype MilliSeconds = MilliSeconds {}
- newtype Months = Months {}
- newtype NanoSeconds = NanoSeconds {}
- newtype Weeks = Weeks {}
- newtype Years = Years {}
- convert :: (TimeUnit a, TimeUnit b) => a -> b
- 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
Hours.
Instances
| FromJSON Hours Source # | |||||
| 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 | |||||
Minutes.
Instances
| FromJSON Minutes Source # | |||||
| 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 | |||||
Seconds.
Instances
| FromJSON Seconds Source # | |||||
| 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 | |||||
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 # | |||||
| 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 | |||||
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 Methods parseJSON :: Value -> Parser MilliSeconds Source # parseJSONList :: Value -> Parser [MilliSeconds] Source # | |||||
| ToJSON MilliSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toJSON :: MilliSeconds -> Value Source # toEncoding :: MilliSeconds -> Encoding Source # toJSONList :: [MilliSeconds] -> Value Source # toEncodingList :: [MilliSeconds] -> Encoding Source # omitField :: MilliSeconds -> Bool Source # | |||||
| 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 Source # invert :: MilliSeconds -> MilliSeconds Source # plus :: MilliSeconds -> MilliSeconds -> MilliSeconds Source # minus :: MilliSeconds -> MilliSeconds -> MilliSeconds Source # | |||||
| 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-KCkDZxsnzRL2Rz1bXqMt4a" 'True) (C1 ('MetaCons "MilliSeconds" 'PrefixI 'True) (S1 ('MetaSel ('Just "unMilliSeconds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64))) | |||||
Months.
Instances
| FromJSON Months Source # | |||||
| 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 Methods parseJSON :: Value -> Parser NanoSeconds Source # parseJSONList :: Value -> Parser [NanoSeconds] Source # | |||||
| ToJSON NanoSeconds Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods toJSON :: NanoSeconds -> Value Source # toEncoding :: NanoSeconds -> Encoding Source # toJSONList :: [NanoSeconds] -> Value Source # toEncodingList :: [NanoSeconds] -> Encoding Source # omitField :: NanoSeconds -> Bool Source # | |||||
| 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 Source # invert :: NanoSeconds -> NanoSeconds Source # plus :: NanoSeconds -> NanoSeconds -> NanoSeconds Source # minus :: NanoSeconds -> NanoSeconds -> NanoSeconds Source # | |||||
| Scaling NanoSeconds Int64 Source # | |||||
Defined in Polysemy.Time.Data.TimeUnit Methods scale :: Int64 -> NanoSeconds -> NanoSeconds Source # | |||||
| 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-KCkDZxsnzRL2Rz1bXqMt4a" 'True) (C1 ('MetaCons "NanoSeconds" 'PrefixI 'True) (S1 ('MetaSel ('Just "unNanoSeconds") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64))) | |||||
Weeks.
Instances
| FromJSON Weeks Source # | |||||
| 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 # | |||||
| 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 | |||||
convert :: (TimeUnit a, TimeUnit b) => a -> b Source #
Convert between different time spans.
>>>convert (picosecondsToDiffTime 50000000) :: MicroSecondsMicroSeconds {unMicroSeconds = 50}
>>>convert (MilliSeconds 5) :: MicroSecondsMicroSeconds 5000
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.