Safe Haskell | Safe-Inferred |
---|
- 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))
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 | |
|
Bifunctor Conceit | |
MonadError e (Conceit e) | |
Monad (Conceit e) |
|
Functor (Conceit e) | |
MonadPlus (Conceit e) | |
Applicative (Conceit e) | |
MonadThrow (Conceit e) | Throws exceptions into IO. |
MonadCatch (Conceit e) | Catches exceptions from IO. |
MonadIO (Conceit e) | |
Alternative (Conceit e) | |
Plus (Conceit e) |
|
Alt (Conceit e) |
|
Apply (Conceit s) |
|
Bind (Conceit s) |
|
Monoid a => Monoid (Conceit e a) |
_runConceit :: Conceit Void a -> IO aSource
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
.