Safe Haskell | Safe-Inferred |
---|
- newtype Conceit e a = Conceit {
- runConceit :: IO (Either e a)
- _Conceit :: IO a -> Conceit e a
- conceit :: (Show e, Typeable e) => IO (Either e a) -> IO (Either e b) -> IO (Either e (a, b))
- mapConceit :: (Show e, Typeable e, Traversable t) => (a -> IO (Either e b)) -> t a -> IO (Either e (t b))
Documentation
Conceit
is very similar to Concurrently
from the
async
package, but it has an explicit error type e
.
The Applicative
instance is used to run actions concurrently, wait until
they finish, and combine their results.
However, if any of the actions fails with e
the other actions are
immediately cancelled and the whole computation fails with e
.
To put it another way: Conceit
behaves like Concurrently
for successes and
like race
for errors.
Conceit | |
|
mapConceit :: (Show e, Typeable e, Traversable t) => (a -> IO (Either e b)) -> t a -> IO (Either e (t b))Source
Works similarly to mapConcurrently
from the
async
package, but if any of the computations fails with e
, the others are
immediately cancelled and the whole computation fails with e
.