stm-actor-0.1.1.1: A simplistic actor model based on STM

Copyright(c) Samuel Schlesinger 2020
LicenseMIT
Maintainersgschlesinger@gmail.com
Stabilityexperimental
PortabilityPOSIX, Windows
Safe HaskellSafe
LanguageHaskell2010

Control.Concurrent.Actor

Description

 
Synopsis

Documentation

data ActionT message m a Source #

A type that contains the actions that Actors will do.

Instances
(MonadWriter w m, MonadReader r m, MonadState s m) => MonadRWS r w s (ActionT message m) Source # 
Instance details

Defined in Control.Concurrent.Actor

MonadWriter w m => MonadWriter w (ActionT message m) Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

writer :: (a, w) -> ActionT message m a #

tell :: w -> ActionT message m () #

listen :: ActionT message m a -> ActionT message m (a, w) #

pass :: ActionT message m (a, w -> w) -> ActionT message m a #

MonadState s m => MonadState s (ActionT message m) Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

get :: ActionT message m s #

put :: s -> ActionT message m () #

state :: (s -> (a, s)) -> ActionT message m a #

MonadReader r m => MonadReader r (ActionT message m) Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

ask :: ActionT message m r #

local :: (r -> r) -> ActionT message m a -> ActionT message m a #

reader :: (r -> a) -> ActionT message m a #

MonadError e m => MonadError e (ActionT message m) Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

throwError :: e -> ActionT message m a #

catchError :: ActionT message m a -> (e -> ActionT message m a) -> ActionT message m a #

MonadTrans (ActionT message) Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

lift :: Monad m => m a -> ActionT message m a #

Monad m => Monad (ActionT message m) Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

(>>=) :: ActionT message m a -> (a -> ActionT message m b) -> ActionT message m b #

(>>) :: ActionT message m a -> ActionT message m b -> ActionT message m b #

return :: a -> ActionT message m a #

fail :: String -> ActionT message m a #

Functor m => Functor (ActionT message m) Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

fmap :: (a -> b) -> ActionT message m a -> ActionT message m b #

(<$) :: a -> ActionT message m b -> ActionT message m a #

Applicative m => Applicative (ActionT message m) Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

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 # 
Instance details

Defined in Control.Concurrent.Actor

Methods

liftIO :: IO a -> ActionT message m a #

MonadCont m => MonadCont (ActionT message m) Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

callCC :: ((a -> ActionT message m b) -> ActionT message m a) -> ActionT message m a #

data Actor message Source #

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.

Constructors

Actor 

Fields

Instances
Contravariant Actor Source # 
Instance details

Defined in Control.Concurrent.Actor

Methods

contramap :: (a -> b) -> Actor b -> Actor a #

(>$) :: b -> Actor b -> Actor a #

actFinally :: (Either SomeException a -> IO ()) -> ActionT message IO a -> IO (Actor message) Source #

Perform some ActionT in a thread, with some cleanup afterwards.

act :: ActionT message IO a -> IO (Actor message) Source #

Perform some ActionT in a thread.

receiveSTM :: MonadIO m => (message -> STM a) -> ActionT message m a Source #

Receive a message and, in the same transaction, produce some result.

receive :: MonadIO m => (message -> ActionT message m a) -> ActionT message m a Source #

Receive a message and do some ActionT with it.

hoistActionT :: (forall a. m a -> n a) -> ActionT message m a -> ActionT message n a Source #

Use a natural transformation to transform an ActionT on one base monad to another.