-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Extra Utilities for the Async Library
--
-- Extra Utilities for the Async Library
@package async-extras
@version 0.1.3.2
module Control.Concurrent.Async.Lifted.Extra
-- | Implementation derived from Petr Pudlák's answer on StackOverflow
-- http://stackoverflow.com/a/18898822/230050
sequencePool :: (Traversable t, MonadBaseControl IO m) => Int -> t (m a) -> m (t a)
-- | Implementation copied from Petr Pudlák's answer on StackOverflow
-- http://stackoverflow.com/a/18898822/230050
mapPool :: (Traversable t, MonadBaseControl IO m) => Int -> (a -> m b) -> t a -> m (t b)
sequenceConcurrently :: (Traversable t, MonadBaseControl IO m) => t (m a) -> m (t a)
forConcurrently_ :: (Foldable t, MonadBaseControl IO m) => t a -> (a -> m b) -> m ()
-- | Create an Async and pass it to itself.
fixAsync :: (MonadFix m, MonadBaseControl IO m) => (Async (StM m a) -> m a) -> m (Async (StM m a))
-- | Like fixAsync but using forkOS internally.
fixAsyncBound :: (MonadFix m, MonadBaseControl IO m) => (Async (StM m a) -> m a) -> m (Async (StM m a))
-- | Like fixAsync but using forkOn internally.
fixAsyncOn :: (MonadFix m, MonadBaseControl IO m) => Int -> (Async (StM m a) -> m a) -> m (Async (StM m a))
-- | Like fixAsync but using forkIOWithUnmask internally. The
-- child thread is passed a function that can be used to unmask
-- asynchronous exceptions.
fixAsyncWithUnmask :: (MonadFix m, MonadBaseControl IO m) => (Async (StM m a) -> (forall b. m b -> m b) -> m a) -> m (Async (StM m a))
-- | Like fixAsyncOn but using forkOnWithUnmask internally.
-- The child thread is passed a function that can be used to unmask
-- asynchronous exceptions.
fixAsyncOnWithUnmask :: (MonadFix m, MonadBaseControl IO m) => Int -> (Async (StM m a) -> (forall b. m b -> m b) -> m a) -> m (Async (StM m a))
-- | Create an async that is linked to a parent. If the parent dies so does
-- this async
withParent :: MonadBaseControl IO m => Async a -> m b -> m (Async (StM m b))
module Control.Concurrent.Async.Extra
-- | Implementation derived from Petr Pudlák's answer on StackOverflow
-- http://stackoverflow.com/a/18898822/230050
sequencePool :: Traversable t => Int -> t (IO a) -> IO (t a)
-- | Implementation copied from Petr Pudlák's answer on StackOverflow
-- http://stackoverflow.com/a/18898822/230050
mapPool :: Traversable t => Int -> (a -> IO b) -> t a -> IO (t b)
sequenceConcurrently :: Traversable t => t (IO a) -> IO (t a)
forConcurrently_ :: Foldable t => t a -> (a -> IO b) -> IO ()
-- | Create an Async and pass it to itself.
fixAsync :: (Async a -> IO a) -> IO (Async a)
-- | Like fixAsync but using forkOS internally.
fixAsyncBound :: (Async a -> IO a) -> IO (Async a)
-- | Like fixAsync but using forkOn internally.
fixAsyncOn :: Int -> (Async a -> IO a) -> IO (Async a)
-- | Like fixAsync but using forkIOWithUnmask internally. The
-- child thread is passed a function that can be used to unmask
-- asynchronous exceptions.
fixAsyncWithUnmask :: (Async a -> (forall b. IO b -> IO b) -> IO a) -> IO (Async a)
-- | Like fixAsyncOn but using forkOnWithUnmask internally.
-- The child thread is passed a function that can be used to unmask
-- asynchronous exceptions.
fixAsyncOnWithUnmask :: Int -> (Async a -> (forall b. IO b -> IO b) -> IO a) -> IO (Async a)
-- | Create an async that is linked to a parent. If the parent dies so does
-- this async
withParent :: Async a -> IO b -> IO (Async b)
-- | Promise is like Concurrently but includes a sequential
-- monad instance
newtype Promise a
Promise :: IO a -> Promise a
[unPromise] :: Promise a -> IO a
instance GHC.Base.Functor Control.Concurrent.Async.Extra.Promise
instance GHC.Base.Applicative Control.Concurrent.Async.Extra.Promise
instance GHC.Base.Alternative Control.Concurrent.Async.Extra.Promise
instance GHC.Base.Monad Control.Concurrent.Async.Extra.Promise
instance GHC.Base.MonadPlus Control.Concurrent.Async.Extra.Promise