-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Basic Erlang-like process support for Haskell -- @package eprocess @version 1.7.2 -- | This module provides a *very* basic support for processes with message -- queues. It was built using channels and MVars. module Control.Concurrent.Process -- | The ReceiverT generic type. -- -- data ReceiverT r m a -- | A Process handle. It's returned on process creation and should be used -- | afterwards to send messages to it data Handle r -- | Process are receivers that run in the IO Monad type Process r = ReceiverT r IO -- | makeProcess builds a process from a code that generates an IO -- action. Usage: process <- makeProcess evalFunction receiver -- makeProcess :: (m t -> IO s) -> ReceiverT r m t -> Process r s -- | runHere executes process code in the current environment. -- Usage: result <- runHere process runHere :: MonadIO m => Process r t -> m t -- | spawn starts a process and returns its handle. Usage: -- handle <- spawn process spawn :: MonadIO m => Process r k -> m (Handle r) -- | kill lets you *brutally* terminate a running process. Usage: -- kill processHandle kill :: MonadIO m => Handle a -> m () -- | self returns the handle of the current process. Usage: -- handle <- self self :: Monad m => ReceiverT r m (Handle r) -- | sendTo lets you send a message to a running process. Usage: -- sendTo processHandle message sendTo :: MonadIO m => Handle a -> a -> m () -- | recv lets you receive a message in a running process (it's a -- blocking receive). Usage: message <- recv recv :: MonadIO m => ReceiverT r m r -- | Just like recv but with a timeout parameter. Usage: -- maybeMessage <- recv recvIn :: MonadIO m => Int -> ReceiverT r m (Maybe r) -- | sendRecv is just a syntactic sugar for: sendTo h a -- >> recv sendRecv :: MonadIO m => Handle a -> a -> ReceiverT r m r instance Functor m => Functor (ReceiverT r m) instance Applicative m => Applicative (ReceiverT r m) instance Monad m => Monad (ReceiverT r m) instance MonadIO m => MonadIO (ReceiverT r m) instance MonadTrans (ReceiverT r) instance MonadCatch m => MonadCatch (ReceiverT r m) instance MonadThrow m => MonadThrow (ReceiverT r m) instance MonadMask m => MonadMask (ReceiverT r m) instance MonadError e m => MonadError e (ReceiverT r m) instance (Monoid w, MonadWriter w m) => MonadWriter w (ReceiverT w m) instance MonadReader r m => MonadReader r (ReceiverT r m) instance MonadState s m => MonadState s (ReceiverT r m)