Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
- data Wait diff a = Wait diff a
- type ScheduleT diff = FreeT (Wait diff)
- wait :: Monad m => diff -> ScheduleT diff m ()
- runScheduleT :: Monad m => (diff -> m ()) -> ScheduleT diff m a -> m a
- runScheduleIO :: (MonadIO m, Integral n) => ScheduleT n m a -> m a
- race :: (Ord diff, Num diff, Monad m) => ScheduleT diff m a -> ScheduleT diff m b -> ScheduleT diff m (Either (a, ScheduleT diff m b) (ScheduleT diff m a, b))
- async :: (Ord diff, Num diff, Monad m) => ScheduleT diff m a -> ScheduleT diff m b -> ScheduleT diff m (a, b)
Documentation
A functor implementing a syntactical "waiting" action.
diff
represents the duration to wait.a
is the encapsulated value.
Wait diff a |
type ScheduleT diff = FreeT (Wait diff) Source #
Values in ScheduleT diff m
are delayed computations with side effects in m
.
Delays can occur between any two side effects, with lengths specified by a diff
value.
These delays don't have any semantics, it can be given to them with runScheduleT
.
wait :: Monad m => diff -> ScheduleT diff m () Source #
The side effect that waits for a specified amount.
runScheduleT :: Monad m => (diff -> m ()) -> ScheduleT diff m a -> m a Source #
Supply a semantic meaning to Wait
.
For every occurrence of Wait diff
in the ScheduleT diff m a
value,
a waiting action is executed, depending on diff
.
race :: (Ord diff, Num diff, Monad m) => ScheduleT diff m a -> ScheduleT diff m b -> ScheduleT diff m (Either (a, ScheduleT diff m b) (ScheduleT diff m a, b)) Source #
Runs two values in ScheduleT
concurrently
and returns the first one that yields a value
(defaulting to the first argument),
and a continuation for the other value.