- psequence_ :: (ListLike s el, Nullable s) => [Iteratee s IO a] -> Iteratee s IO ()
- parE :: (Nullable s1, Nullable s2, Monoid s1) => Enumeratee s1 s2 IO r -> Enumeratee s1 s2 IO r
- parI :: (Nullable s, Monoid s) => Iteratee s IO a -> Iteratee s IO a
- liftParI :: (Nullable s, Monoid s, MonadIO m) => Iteratee s IO a -> Iteratee s m a
- mapReduce :: (Monad m, Nullable s, Monoid b) => Int -> (s -> b) -> Iteratee s m b
Documentation
psequence_ :: (ListLike s el, Nullable s) => [Iteratee s IO a] -> Iteratee s IO ()Source
Enumerate a list of iteratees over a single stream simultaneously and discard the results. Each iteratee runs in a separate forkIO thread, passes all errors from iteratees up.
parE :: (Nullable s1, Nullable s2, Monoid s1) => Enumeratee s1 s2 IO r -> Enumeratee s1 s2 IO rSource
Transform an Enumeratee into a parallel composable one, introducing
one step extra delay, see parI
.
parI :: (Nullable s, Monoid s) => Iteratee s IO a -> Iteratee s IO aSource
Transform usual Iteratee into parallel composable one, introducing one step extra delay.
Ex - time spent in Enumerator working on x'th packet Ix - time spent in Iteratee working on x'th packet z - last packet, y = (z-1)'th packet
regular Iteratee: E0 - I0, E1 - I1, E2 - I2 .. Ez -> Iz parallel Iteratee: E0, E1, E2, .. Ez _ I0_ I1_ .. Iy__ Iz
liftParI :: (Nullable s, Monoid s, MonadIO m) => Iteratee s IO a -> Iteratee s m aSource
A variant of parI
with the parallelized iteratee lifted into an
arbitrary MonadIO.
:: (Monad m, Nullable s, Monoid b) | |
=> Int | maximum number of chunks to read |
-> (s -> b) | map function |
-> Iteratee s m b |
Perform a parallel map/reduce. The bufsize
parameter controls
the maximum number of chunks to read at one time. A larger bufsize
allows for greater parallelism, but will require more memory.
Implementation of sum
sum :: (Monad m, LL.ListLike s, Nullable s) => Iteratee s m Int64 sum = getSum <$> mapReduce 4 (Sum . LL.sum)