-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | *Very* basic Erlang-like process support for Haskell -- -- This library provides a *very* basic support for processes with -- message queues. It was built using channels, threads and MVars. Since -- version 1.1.0 you can also kill a running process. @package eprocess @version 1.1.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 -- | sendRecv is just a syntactic sugar for: sendTo h a -- >> recv sendRecv :: (MonadIO m) => Handle a -> a -> ReceiverT r m r instance (Monad m) => Monad (ReceiverT r m) instance (MonadIO m) => MonadIO (ReceiverT r m) instance MonadTrans (ReceiverT r) instance (MonadCatchIO m) => MonadCatchIO (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)