-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Orphan instances for MonadBase and MonadBaseControl.
--   
--   This module exports instances for <tt><a>MonadBase</a> </tt><a>IO</a>
--   and <tt><a>MonadBaseControl</a> </tt><a>IO</a> for the
--   <tt><a>Process</a> monad. This is for use in conjunction with a
--   library requiring these instances, such as the </tt><a>lifted-base</a>
--   package.
--   
--   A tutorial segment regarding use of this in distributed-process
--   applications may be found <a>here</a>.
--   
--   Please excercise caution in usage of this instance, as it can enable
--   use of functions such as <a>forkIO</a> (or, <a>fork</a> from
--   'lifted-base') which compromise invariants in the Process monad and
--   can lead to confusing and subtle issues. Always use the Cloud Haskell
--   functions such as <a>spawnLocal</a> instead.
--   
--   example usage:
--   
--   <pre>
--   import Control.Distributed.Process.MonadBaseControl()
--   import Control.Concurrent.MVar.Lifted (withMVar)
--   
--   processWithMVar :: MVar a -&gt; (a -&gt; Process b) -&gt; Process b
--   processWithMvar = withMVar
--   </pre>
@package distributed-process-monad-control
@version 0.5.1.3


-- | This module only exports instances for <a>MonadBase</a> <a>IO</a> and
--   <a>MonadBaseControl</a> <a>IO</a> for the <a>Process</a> monad. This
--   is for use in conjunction with a library requiring these instances,
--   such as the <a>lifted-base</a> package.
--   
--   Please excercise caution in usage of this instance, as it can enable
--   use of functions such as <tt>forkIO</tt> (or, <tt>fork</tt> from
--   lifted-base) which compromise invariants in the Process monad and can
--   lead to confusing and subtle issues. Always use the Cloud Haskell
--   functions such as <tt>spawnLocal</tt> instead.
--   
--   example usage:
--   
--   <pre>
--   import Control.Distributed.Process.MonadBaseControl()
--   import Control.Concurrent.MVar.Lifted (withMVar)
--   </pre>
--   
--   <pre>
--   processWithMVar :: MVar a -&gt; (a -&gt; Process b) -&gt; Process b
--   processWithMvar = withMVar
--   </pre>
module Control.Distributed.Process.MonadBaseControl
instance Control.Monad.Base.MonadBase GHC.Types.IO Control.Distributed.Process.Internal.Types.Process
instance Control.Monad.Trans.Control.MonadBaseControl GHC.Types.IO Control.Distributed.Process.Internal.Types.Process
