@hackage distributed-process-monad-control0.5.1.1

Orphan instances for MonadBase and MonadBaseControl.

This module exports instances for MonadBase IO and MonadBaseControl IO for the Process monad. This is for use in conjunction with a library requiring these instances, such as the lifted-base package.

A tutorial segment regarding use of this in distributed-process applications may be found here.

Please excercise caution in usage of this instance, as it can enable use of functions such as forkIO (or, fork 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 spawnLocal instead.

example usage:

import Control.Distributed.Process.MonadBaseControl()
import Control.Concurrent.MVar.Lifted (withMVar)

processWithMVar :: MVar a -> (a -> Process b) -> Process b
processWithMvar = withMVar