Copyright | (c) Samuel Schlesinger 2020 |
---|---|
License | MIT |
Maintainer | sgschlesinger@gmail.com |
Stability | experimental |
Portability | POSIX, Windows |
Safe Haskell | Safe |
Language | Haskell2010 |
Synopsis
- data ActionT message m a
- data Actor message = Actor {
- addAfterEffect :: (Maybe SomeException -> IO ()) -> STM ()
- threadId :: ThreadId
- send :: message -> STM ()
- actFinally :: (Either SomeException a -> IO ()) -> ActionT message IO a -> IO (Actor message)
- act :: ActionT message IO a -> IO (Actor message)
- receiveSTM :: MonadIO m => (message -> STM a) -> ActionT message m a
- receive :: MonadIO m => (message -> ActionT message m a) -> ActionT message m a
- hoistActionT :: (forall a. m a -> n a) -> ActionT message m a -> ActionT message n a
Documentation
data ActionT message m a Source #
A type that contains the actions that Actor
s will do.
Instances
MonadReader r m => MonadReader r (ActionT message m) Source # | |
MonadTrans (ActionT message) Source # | |
Defined in Control.Concurrent.Actor | |
Monad m => Monad (ActionT message m) Source # | |
Functor m => Functor (ActionT message m) Source # | |
Applicative m => Applicative (ActionT message m) Source # | |
Defined in Control.Concurrent.Actor pure :: a -> ActionT message m a # (<*>) :: ActionT message m (a -> b) -> ActionT message m a -> ActionT message m b # liftA2 :: (a -> b -> c) -> ActionT message m a -> ActionT message m b -> ActionT message m c # (*>) :: ActionT message m a -> ActionT message m b -> ActionT message m b # (<*) :: ActionT message m a -> ActionT message m b -> ActionT message m a # | |
MonadIO m => MonadIO (ActionT message m) Source # | |
Defined in Control.Concurrent.Actor |
A handle to do things to actors, like sending them messages, fiddling with their threads, or adding an effect that will occur after they've finished executing.
Actor | |
|
actFinally :: (Either SomeException a -> IO ()) -> ActionT message IO a -> IO (Actor message) Source #
Perform some ActionT
in a thread, with some cleanup afterwards.
receiveSTM :: MonadIO m => (message -> STM a) -> ActionT message m a Source #
Receive a message and, in the same transaction, produce some result.