Safe Haskell | Safe |
---|---|

Language | Haskell98 |

The MonadTask class that defines the set of combinators to work with Task monad.

The operations for MonadTask are similar to those of co-routines, with the addition of watching and signaling events.

We also define a set of auto lifting for common transformers. Note that we
purposely leave a case undefined where a state transformer goes on top of
a task monad, because such an operation is either unsound or has to roll
back the state (see

). So it's
recommended to keep TaskT on top of all StateT in a transformer stack.`liftCallCC`

# MonadTask class

class Monad m => MonadTask e m | m -> e where Source #

`MonadTask`

specifies a task monad `m`

over an event type `e`

.

`yield`

temporarily suspends current task to let others run.

`fork`

spawns a task and runs it immediately until it ends or
suspends before returning to current task.

watch :: (e -> Maybe a) -> m a Source #

`watch`

suspends the current task to wait for future events, and will
resume execution when an event triggers its watching function.

`signal`

broadcasts an event to all other tasks that are watching,
and give those who wake up the priority to run.

`exit`

ends all tasks and returns immediately.

(Monad m, MonadTask a m) => MonadTask a (MaybeT m) Source # | |

(Monad m, MonadTask a m) => MonadTask a (ListT m) Source # | |

(Monoid w, Monad m, MonadTask a m) => MonadTask a (WriterT w m) Source # | |

(Monoid w, Monad m, MonadTask a m) => MonadTask a (WriterT w m) Source # | |

(Monad m, MonadTask a m) => MonadTask a (IdentityT * m) Source # | |

(Monad m, MonadTask a m) => MonadTask a (ExceptT e m) Source # | |

Monad m => MonadTask e (TaskT e m) Source # | |

(Monad m, MonadTask a m) => MonadTask a (ReaderT * r m) Source # | |