hulk-0.1.1: src/Hulk/Concurrent.hs
module Hulk.Concurrent where
import Control.Concurrent
import Control.Monad.Reader
import Control.Monad.IO
import Hulk.Types
fork :: Hulk a -> Hulk ThreadId
fork m = do
env <- ask
io $ forkIO $ do _ <- runReaderT (runHulk m) env
return ()
withVar :: MVar a -> (a -> Hulk b) -> Hulk b
withVar var m = do
env <- ask
io $ withMVar var $ \var -> runReaderT (runHulk (m var)) env