Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- newtype Conceit e a = Conceit {
- runConceit :: IO (Either e a)
- _Conceit :: IO a -> Conceit e a
- _runConceit :: Conceit Void a -> IO a
- conceit :: IO (Either e a) -> IO (Either e b) -> IO (Either e (a, b))
- mapConceit :: Traversable t => (a -> IO (Either e b)) -> t a -> IO (Either e (t b))
- conceit' :: IO a -> IO b -> (MVar (Either SomeException (Either a b)) -> IO r) -> IO r
Documentation
Conceit
is very similar to Concurrently
from the
async
package, but it has an explicit error type e
.
The Applicative
instance runs two actions concurrently, waits until
they finish, and combines their results.
However, if any of the actions fails with e
the other action is
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 | |
|
_runConceit :: Conceit Void a -> IO a Source #
Run a Conceit
as if it were a Concurrently
.
mapConceit :: 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
.