Safe Haskell | None |
---|---|
Language | Haskell98 |
- data Workers a
- data Result a
- newResult :: a -> IO (Result a)
- emptyResult :: IO (Result a)
- addResult :: Monad m => Result (m a) -> m a -> IO (m a)
- getResult :: Result a -> IO a
- emptyWorkers :: IO (Workers a)
- failWorkers :: Workers a -> IO ()
- getWorkers :: Workers a -> IO [Async a]
- addWorker :: Workers a -> Async a -> IO ()
- waitForWorkers :: Workers a -> IO ()
- waitForWorkers' :: Workers a -> IO [a]
- data RunError a
- renderRunError :: RunError a -> (a -> Text) -> Text
- consume_ :: MonadIO m => (Queue b -> IO a) -> Int -> (b -> ExceptT e IO ()) -> ExceptT (RunError e) m a
- consume :: forall a b c e. (Queue a -> IO b) -> Int -> (a -> IO (Either e c)) -> IO (Either (RunError e) (b, [c]))
- waitEitherBoth :: Async a -> Async b -> Async c -> IO (Either a (b, c))
Data
emptyResult :: IO (Result a) Source #
emptyWorkers :: IO (Workers a) Source #
failWorkers :: Workers a -> IO () Source #
waitForWorkers :: Workers a -> IO () Source #
waitForWorkers' :: Workers a -> IO [a] Source #
Operations
consume_ :: MonadIO m => (Queue b -> IO a) -> Int -> (b -> ExceptT e IO ()) -> ExceptT (RunError e) m a Source #
Provide a producer and an action to be run across the result of that producer in parallel.
Common usage: @ let producer :: Address -> Queue Address -> IO () producer prefix q = list' prefix $$ writeQueue q
consume producer 100 ((a :: Address) -> doThis) @