{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}

module Simpoole.Internal (FailToIO (..), failToIO) where

import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
import Control.Monad.Conc.Class (MonadConc)
import Control.Monad.IO.Class (MonadIO (liftIO))
import Data.Coerce (coerce)

newtype FailToIO m a = FailToIO (m a)
  deriving newtype
    ( a -> FailToIO m b -> FailToIO m a
(a -> b) -> FailToIO m a -> FailToIO m b
(forall a b. (a -> b) -> FailToIO m a -> FailToIO m b)
-> (forall a b. a -> FailToIO m b -> FailToIO m a)
-> Functor (FailToIO m)
forall a b. a -> FailToIO m b -> FailToIO m a
forall a b. (a -> b) -> FailToIO m a -> FailToIO m b
forall (m :: * -> *) a b.
Functor m =>
a -> FailToIO m b -> FailToIO m a
forall (m :: * -> *) a b.
Functor m =>
(a -> b) -> FailToIO m a -> FailToIO m b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> FailToIO m b -> FailToIO m a
$c<$ :: forall (m :: * -> *) a b.
Functor m =>
a -> FailToIO m b -> FailToIO m a
fmap :: (a -> b) -> FailToIO m a -> FailToIO m b
$cfmap :: forall (m :: * -> *) a b.
Functor m =>
(a -> b) -> FailToIO m a -> FailToIO m b
Functor
    , Functor (FailToIO m)
a -> FailToIO m a
Functor (FailToIO m)
-> (forall a. a -> FailToIO m a)
-> (forall a b.
    FailToIO m (a -> b) -> FailToIO m a -> FailToIO m b)
-> (forall a b c.
    (a -> b -> c) -> FailToIO m a -> FailToIO m b -> FailToIO m c)
-> (forall a b. FailToIO m a -> FailToIO m b -> FailToIO m b)
-> (forall a b. FailToIO m a -> FailToIO m b -> FailToIO m a)
-> Applicative (FailToIO m)
FailToIO m a -> FailToIO m b -> FailToIO m b
FailToIO m a -> FailToIO m b -> FailToIO m a
FailToIO m (a -> b) -> FailToIO m a -> FailToIO m b
(a -> b -> c) -> FailToIO m a -> FailToIO m b -> FailToIO m c
forall a. a -> FailToIO m a
forall a b. FailToIO m a -> FailToIO m b -> FailToIO m a
forall a b. FailToIO m a -> FailToIO m b -> FailToIO m b
forall a b. FailToIO m (a -> b) -> FailToIO m a -> FailToIO m b
forall a b c.
(a -> b -> c) -> FailToIO m a -> FailToIO m b -> FailToIO m c
forall (f :: * -> *).
Functor f
-> (forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
forall (m :: * -> *). Applicative m => Functor (FailToIO m)
forall (m :: * -> *) a. Applicative m => a -> FailToIO m a
forall (m :: * -> *) a b.
Applicative m =>
FailToIO m a -> FailToIO m b -> FailToIO m a
forall (m :: * -> *) a b.
Applicative m =>
FailToIO m a -> FailToIO m b -> FailToIO m b
forall (m :: * -> *) a b.
Applicative m =>
FailToIO m (a -> b) -> FailToIO m a -> FailToIO m b
forall (m :: * -> *) a b c.
Applicative m =>
(a -> b -> c) -> FailToIO m a -> FailToIO m b -> FailToIO m c
<* :: FailToIO m a -> FailToIO m b -> FailToIO m a
$c<* :: forall (m :: * -> *) a b.
Applicative m =>
FailToIO m a -> FailToIO m b -> FailToIO m a
*> :: FailToIO m a -> FailToIO m b -> FailToIO m b
$c*> :: forall (m :: * -> *) a b.
Applicative m =>
FailToIO m a -> FailToIO m b -> FailToIO m b
liftA2 :: (a -> b -> c) -> FailToIO m a -> FailToIO m b -> FailToIO m c
$cliftA2 :: forall (m :: * -> *) a b c.
Applicative m =>
(a -> b -> c) -> FailToIO m a -> FailToIO m b -> FailToIO m c
<*> :: FailToIO m (a -> b) -> FailToIO m a -> FailToIO m b
$c<*> :: forall (m :: * -> *) a b.
Applicative m =>
FailToIO m (a -> b) -> FailToIO m a -> FailToIO m b
pure :: a -> FailToIO m a
$cpure :: forall (m :: * -> *) a. Applicative m => a -> FailToIO m a
$cp1Applicative :: forall (m :: * -> *). Applicative m => Functor (FailToIO m)
Applicative
    , Applicative (FailToIO m)
a -> FailToIO m a
Applicative (FailToIO m)
-> (forall a b.
    FailToIO m a -> (a -> FailToIO m b) -> FailToIO m b)
-> (forall a b. FailToIO m a -> FailToIO m b -> FailToIO m b)
-> (forall a. a -> FailToIO m a)
-> Monad (FailToIO m)
FailToIO m a -> (a -> FailToIO m b) -> FailToIO m b
FailToIO m a -> FailToIO m b -> FailToIO m b
forall a. a -> FailToIO m a
forall a b. FailToIO m a -> FailToIO m b -> FailToIO m b
forall a b. FailToIO m a -> (a -> FailToIO m b) -> FailToIO m b
forall (m :: * -> *). Monad m => Applicative (FailToIO m)
forall (m :: * -> *) a. Monad m => a -> FailToIO m a
forall (m :: * -> *) a b.
Monad m =>
FailToIO m a -> FailToIO m b -> FailToIO m b
forall (m :: * -> *) a b.
Monad m =>
FailToIO m a -> (a -> FailToIO m b) -> FailToIO m b
forall (m :: * -> *).
Applicative m
-> (forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
return :: a -> FailToIO m a
$creturn :: forall (m :: * -> *) a. Monad m => a -> FailToIO m a
>> :: FailToIO m a -> FailToIO m b -> FailToIO m b
$c>> :: forall (m :: * -> *) a b.
Monad m =>
FailToIO m a -> FailToIO m b -> FailToIO m b
>>= :: FailToIO m a -> (a -> FailToIO m b) -> FailToIO m b
$c>>= :: forall (m :: * -> *) a b.
Monad m =>
FailToIO m a -> (a -> FailToIO m b) -> FailToIO m b
$cp1Monad :: forall (m :: * -> *). Monad m => Applicative (FailToIO m)
Monad
    , Monad (FailToIO m)
Monad (FailToIO m)
-> (forall a. IO a -> FailToIO m a) -> MonadIO (FailToIO m)
IO a -> FailToIO m a
forall a. IO a -> FailToIO m a
forall (m :: * -> *).
Monad m -> (forall a. IO a -> m a) -> MonadIO m
forall (m :: * -> *). MonadIO m => Monad (FailToIO m)
forall (m :: * -> *) a. MonadIO m => IO a -> FailToIO m a
liftIO :: IO a -> FailToIO m a
$cliftIO :: forall (m :: * -> *) a. MonadIO m => IO a -> FailToIO m a
$cp1MonadIO :: forall (m :: * -> *). MonadIO m => Monad (FailToIO m)
MonadIO
    , Monad (FailToIO m)
e -> FailToIO m a
Monad (FailToIO m)
-> (forall e a. Exception e => e -> FailToIO m a)
-> MonadThrow (FailToIO m)
forall e a. Exception e => e -> FailToIO m a
forall (m :: * -> *).
Monad m -> (forall e a. Exception e => e -> m a) -> MonadThrow m
forall (m :: * -> *). MonadThrow m => Monad (FailToIO m)
forall (m :: * -> *) e a.
(MonadThrow m, Exception e) =>
e -> FailToIO m a
throwM :: e -> FailToIO m a
$cthrowM :: forall (m :: * -> *) e a.
(MonadThrow m, Exception e) =>
e -> FailToIO m a
$cp1MonadThrow :: forall (m :: * -> *). MonadThrow m => Monad (FailToIO m)
MonadThrow
    , MonadThrow (FailToIO m)
MonadThrow (FailToIO m)
-> (forall e a.
    Exception e =>
    FailToIO m a -> (e -> FailToIO m a) -> FailToIO m a)
-> MonadCatch (FailToIO m)
FailToIO m a -> (e -> FailToIO m a) -> FailToIO m a
forall e a.
Exception e =>
FailToIO m a -> (e -> FailToIO m a) -> FailToIO m a
forall (m :: * -> *).
MonadThrow m
-> (forall e a. Exception e => m a -> (e -> m a) -> m a)
-> MonadCatch m
forall (m :: * -> *). MonadCatch m => MonadThrow (FailToIO m)
forall (m :: * -> *) e a.
(MonadCatch m, Exception e) =>
FailToIO m a -> (e -> FailToIO m a) -> FailToIO m a
catch :: FailToIO m a -> (e -> FailToIO m a) -> FailToIO m a
$ccatch :: forall (m :: * -> *) e a.
(MonadCatch m, Exception e) =>
FailToIO m a -> (e -> FailToIO m a) -> FailToIO m a
$cp1MonadCatch :: forall (m :: * -> *). MonadCatch m => MonadThrow (FailToIO m)
MonadCatch
    , MonadCatch (FailToIO m)
MonadCatch (FailToIO m)
-> (forall b.
    ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
    -> FailToIO m b)
-> (forall b.
    ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
    -> FailToIO m b)
-> (forall a b c.
    FailToIO m a
    -> (a -> ExitCase b -> FailToIO m c)
    -> (a -> FailToIO m b)
    -> FailToIO m (b, c))
-> MonadMask (FailToIO m)
FailToIO m a
-> (a -> ExitCase b -> FailToIO m c)
-> (a -> FailToIO m b)
-> FailToIO m (b, c)
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
-> FailToIO m b
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
-> FailToIO m b
forall b.
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
-> FailToIO m b
forall a b c.
FailToIO m a
-> (a -> ExitCase b -> FailToIO m c)
-> (a -> FailToIO m b)
-> FailToIO m (b, c)
forall (m :: * -> *).
MonadCatch m
-> (forall b. ((forall a. m a -> m a) -> m b) -> m b)
-> (forall b. ((forall a. m a -> m a) -> m b) -> m b)
-> (forall a b c.
    m a -> (a -> ExitCase b -> m c) -> (a -> m b) -> m (b, c))
-> MonadMask m
forall (m :: * -> *). MonadMask m => MonadCatch (FailToIO m)
forall (m :: * -> *) b.
MonadMask m =>
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
-> FailToIO m b
forall (m :: * -> *) a b c.
MonadMask m =>
FailToIO m a
-> (a -> ExitCase b -> FailToIO m c)
-> (a -> FailToIO m b)
-> FailToIO m (b, c)
generalBracket :: FailToIO m a
-> (a -> ExitCase b -> FailToIO m c)
-> (a -> FailToIO m b)
-> FailToIO m (b, c)
$cgeneralBracket :: forall (m :: * -> *) a b c.
MonadMask m =>
FailToIO m a
-> (a -> ExitCase b -> FailToIO m c)
-> (a -> FailToIO m b)
-> FailToIO m (b, c)
uninterruptibleMask :: ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
-> FailToIO m b
$cuninterruptibleMask :: forall (m :: * -> *) b.
MonadMask m =>
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
-> FailToIO m b
mask :: ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
-> FailToIO m b
$cmask :: forall (m :: * -> *) b.
MonadMask m =>
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m b)
-> FailToIO m b
$cp1MonadMask :: forall (m :: * -> *). MonadMask m => MonadCatch (FailToIO m)
MonadMask
    , Monad (FailToIO m)
Ord (ThreadId (FailToIO m))
Show (ThreadId (FailToIO m))
MonadSTM (STM (FailToIO m))
MonadThrow (FailToIO m)
MonadCatch (FailToIO m)
MonadMask (FailToIO m)
FailToIO m Bool
FailToIO m Int
FailToIO m ()
FailToIO m MaskingState
FailToIO m (ThreadId (FailToIO m))
FailToIO m (MVar (FailToIO m) a)
a -> FailToIO m (IORef (FailToIO m) a)
a -> FailToIO m (TVar (STM (FailToIO m)) a)
Monad (FailToIO m)
-> MonadCatch (FailToIO m)
-> MonadThrow (FailToIO m)
-> MonadMask (FailToIO m)
-> MonadSTM (STM (FailToIO m))
-> Ord (ThreadId (FailToIO m))
-> Show (ThreadId (FailToIO m))
-> (((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
    -> FailToIO m (ThreadId (FailToIO m)))
-> (String
    -> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
    -> FailToIO m (ThreadId (FailToIO m)))
-> (Int
    -> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
    -> FailToIO m (ThreadId (FailToIO m)))
-> (String
    -> Int
    -> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
    -> FailToIO m (ThreadId (FailToIO m)))
-> (((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
    -> FailToIO m (ThreadId (FailToIO m)))
-> (String
    -> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
    -> FailToIO m (ThreadId (FailToIO m)))
-> FailToIO m Bool
-> FailToIO m Bool
-> FailToIO m Int
-> (Int -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
-> FailToIO m ()
-> (Int -> FailToIO m ())
-> (forall a. FailToIO m (MVar (FailToIO m) a))
-> (forall a. String -> FailToIO m (MVar (FailToIO m) a))
-> (forall a. MVar (FailToIO m) a -> a -> FailToIO m ())
-> (forall a. MVar (FailToIO m) a -> a -> FailToIO m Bool)
-> (forall a. MVar (FailToIO m) a -> FailToIO m a)
-> (forall a. MVar (FailToIO m) a -> FailToIO m (Maybe a))
-> (forall a. MVar (FailToIO m) a -> FailToIO m a)
-> (forall a. MVar (FailToIO m) a -> FailToIO m (Maybe a))
-> (forall a. a -> FailToIO m (IORef (FailToIO m) a))
-> (forall a. String -> a -> FailToIO m (IORef (FailToIO m) a))
-> (forall a. IORef (FailToIO m) a -> FailToIO m a)
-> (forall a b.
    IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b)
-> (forall a. IORef (FailToIO m) a -> a -> FailToIO m ())
-> (forall a. IORef (FailToIO m) a -> a -> FailToIO m ())
-> (forall a.
    IORef (FailToIO m) a -> FailToIO m (Ticket (FailToIO m) a))
-> (forall a. Proxy (FailToIO m) -> Ticket (FailToIO m) a -> a)
-> (forall a.
    IORef (FailToIO m) a
    -> Ticket (FailToIO m) a
    -> a
    -> FailToIO m (Bool, Ticket (FailToIO m) a))
-> (forall a b.
    IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b)
-> (forall a. IORef (FailToIO m) a -> (a -> a) -> FailToIO m ())
-> (forall a. STM (FailToIO m) a -> FailToIO m a)
-> (forall a. a -> FailToIO m (TVar (STM (FailToIO m)) a))
-> (forall a. TVar (STM (FailToIO m)) a -> FailToIO m a)
-> (forall e.
    Exception e =>
    ThreadId (FailToIO m) -> e -> FailToIO m ())
-> FailToIO m MaskingState
-> (forall a. FailToIO m a -> FailToIO m a)
-> MonadConc (FailToIO m)
Int -> FailToIO m ()
Int
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
String -> FailToIO m (MVar (FailToIO m) a)
String -> a -> FailToIO m (IORef (FailToIO m) a)
String
-> Int
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
String
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
Proxy (FailToIO m) -> Ticket (FailToIO m) a -> a
ThreadId (FailToIO m) -> e -> FailToIO m ()
IORef (FailToIO m) a -> FailToIO m a
IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b
IORef (FailToIO m) a -> a -> FailToIO m ()
IORef (FailToIO m) a -> a -> FailToIO m ()
IORef (FailToIO m) a -> FailToIO m (Ticket (FailToIO m) a)
IORef (FailToIO m) a
-> Ticket (FailToIO m) a
-> a
-> FailToIO m (Bool, Ticket (FailToIO m) a)
IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b
IORef (FailToIO m) a -> (a -> a) -> FailToIO m ()
MVar (FailToIO m) a -> a -> FailToIO m ()
MVar (FailToIO m) a -> a -> FailToIO m Bool
MVar (FailToIO m) a -> FailToIO m a
MVar (FailToIO m) a -> FailToIO m (Maybe a)
MVar (FailToIO m) a -> FailToIO m a
MVar (FailToIO m) a -> FailToIO m (Maybe a)
STM (FailToIO m) a -> FailToIO m a
TVar (STM (FailToIO m)) a -> FailToIO m a
FailToIO m a -> FailToIO m a
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forall a. FailToIO m (MVar (FailToIO m) a)
forall a. a -> FailToIO m (IORef (FailToIO m) a)
forall a. a -> FailToIO m (TVar (STM (FailToIO m)) a)
forall a. String -> FailToIO m (MVar (FailToIO m) a)
forall a. String -> a -> FailToIO m (IORef (FailToIO m) a)
forall e.
Exception e =>
ThreadId (FailToIO m) -> e -> FailToIO m ()
forall a. Proxy (FailToIO m) -> Ticket (FailToIO m) a -> a
forall a. IORef (FailToIO m) a -> FailToIO m a
forall a.
IORef (FailToIO m) a -> FailToIO m (Ticket (FailToIO m) a)
forall a. IORef (FailToIO m) a -> a -> FailToIO m ()
forall a.
IORef (FailToIO m) a
-> Ticket (FailToIO m) a
-> a
-> FailToIO m (Bool, Ticket (FailToIO m) a)
forall a. IORef (FailToIO m) a -> (a -> a) -> FailToIO m ()
forall a. MVar (FailToIO m) a -> FailToIO m a
forall a. MVar (FailToIO m) a -> FailToIO m (Maybe a)
forall a. MVar (FailToIO m) a -> a -> FailToIO m Bool
forall a. MVar (FailToIO m) a -> a -> FailToIO m ()
forall a. STM (FailToIO m) a -> FailToIO m a
forall a. TVar (STM (FailToIO m)) a -> FailToIO m a
forall a. FailToIO m a -> FailToIO m a
forall a b. IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b
forall (m :: * -> *).
Monad m
-> MonadCatch m
-> MonadThrow m
-> MonadMask m
-> MonadSTM (STM m)
-> Ord (ThreadId m)
-> Show (ThreadId m)
-> (((forall a. m a -> m a) -> m ()) -> m (ThreadId m))
-> (String -> ((forall a. m a -> m a) -> m ()) -> m (ThreadId m))
-> (Int -> ((forall a. m a -> m a) -> m ()) -> m (ThreadId m))
-> (String
    -> Int -> ((forall a. m a -> m a) -> m ()) -> m (ThreadId m))
-> (((forall a. m a -> m a) -> m ()) -> m (ThreadId m))
-> (String -> ((forall a. m a -> m a) -> m ()) -> m (ThreadId m))
-> m Bool
-> m Bool
-> m Int
-> (Int -> m ())
-> m (ThreadId m)
-> m ()
-> (Int -> m ())
-> (forall a. m (MVar m a))
-> (forall a. String -> m (MVar m a))
-> (forall a. MVar m a -> a -> m ())
-> (forall a. MVar m a -> a -> m Bool)
-> (forall a. MVar m a -> m a)
-> (forall a. MVar m a -> m (Maybe a))
-> (forall a. MVar m a -> m a)
-> (forall a. MVar m a -> m (Maybe a))
-> (forall a. a -> m (IORef m a))
-> (forall a. String -> a -> m (IORef m a))
-> (forall a. IORef m a -> m a)
-> (forall a b. IORef m a -> (a -> (a, b)) -> m b)
-> (forall a. IORef m a -> a -> m ())
-> (forall a. IORef m a -> a -> m ())
-> (forall a. IORef m a -> m (Ticket m a))
-> (forall a. Proxy m -> Ticket m a -> a)
-> (forall a. IORef m a -> Ticket m a -> a -> m (Bool, Ticket m a))
-> (forall a b. IORef m a -> (a -> (a, b)) -> m b)
-> (forall a. IORef m a -> (a -> a) -> m ())
-> (forall a. STM m a -> m a)
-> (forall a. a -> m (TVar (STM m) a))
-> (forall a. TVar (STM m) a -> m a)
-> (forall e. Exception e => ThreadId m -> e -> m ())
-> m MaskingState
-> (forall a. m a -> m a)
-> MonadConc m
forall (m :: * -> *). MonadConc m => Monad (FailToIO m)
forall (m :: * -> *). MonadConc m => Ord (ThreadId (FailToIO m))
forall (m :: * -> *). MonadConc m => Show (ThreadId (FailToIO m))
forall (m :: * -> *). MonadConc m => MonadSTM (STM (FailToIO m))
forall (m :: * -> *). MonadConc m => MonadThrow (FailToIO m)
forall (m :: * -> *). MonadConc m => MonadCatch (FailToIO m)
forall (m :: * -> *). MonadConc m => MonadMask (FailToIO m)
forall (m :: * -> *). MonadConc m => FailToIO m Bool
forall (m :: * -> *). MonadConc m => FailToIO m Int
forall (m :: * -> *). MonadConc m => FailToIO m ()
forall (m :: * -> *). MonadConc m => FailToIO m MaskingState
forall (m :: * -> *).
MonadConc m =>
FailToIO m (ThreadId (FailToIO m))
forall (m :: * -> *). MonadConc m => Int -> FailToIO m ()
forall (m :: * -> *).
MonadConc m =>
Int
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forall (m :: * -> *).
MonadConc m =>
String
-> Int
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forall (m :: * -> *).
MonadConc m =>
String
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forall (m :: * -> *).
MonadConc m =>
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forall (m :: * -> *) a.
MonadConc m =>
FailToIO m (MVar (FailToIO m) a)
forall (m :: * -> *) a.
MonadConc m =>
a -> FailToIO m (IORef (FailToIO m) a)
forall (m :: * -> *) a.
MonadConc m =>
a -> FailToIO m (TVar (STM (FailToIO m)) a)
forall (m :: * -> *) a.
MonadConc m =>
String -> FailToIO m (MVar (FailToIO m) a)
forall (m :: * -> *) a.
MonadConc m =>
String -> a -> FailToIO m (IORef (FailToIO m) a)
forall (m :: * -> *) e.
(MonadConc m, Exception e) =>
ThreadId (FailToIO m) -> e -> FailToIO m ()
forall (m :: * -> *) a.
MonadConc m =>
Proxy (FailToIO m) -> Ticket (FailToIO m) a -> a
forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a -> FailToIO m a
forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a -> FailToIO m (Ticket (FailToIO m) a)
forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a -> a -> FailToIO m ()
forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a
-> Ticket (FailToIO m) a
-> a
-> FailToIO m (Bool, Ticket (FailToIO m) a)
forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a -> (a -> a) -> FailToIO m ()
forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> FailToIO m a
forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> FailToIO m (Maybe a)
forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> a -> FailToIO m Bool
forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> a -> FailToIO m ()
forall (m :: * -> *) a.
MonadConc m =>
STM (FailToIO m) a -> FailToIO m a
forall (m :: * -> *) a.
MonadConc m =>
TVar (STM (FailToIO m)) a -> FailToIO m a
forall (m :: * -> *) a. MonadConc m => FailToIO m a -> FailToIO m a
forall (m :: * -> *) a b.
MonadConc m =>
IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b
unsafeUnmask :: FailToIO m a -> FailToIO m a
$cunsafeUnmask :: forall (m :: * -> *) a. MonadConc m => FailToIO m a -> FailToIO m a
getMaskingState :: FailToIO m MaskingState
$cgetMaskingState :: forall (m :: * -> *). MonadConc m => FailToIO m MaskingState
throwTo :: ThreadId (FailToIO m) -> e -> FailToIO m ()
$cthrowTo :: forall (m :: * -> *) e.
(MonadConc m, Exception e) =>
ThreadId (FailToIO m) -> e -> FailToIO m ()
readTVarConc :: TVar (STM (FailToIO m)) a -> FailToIO m a
$creadTVarConc :: forall (m :: * -> *) a.
MonadConc m =>
TVar (STM (FailToIO m)) a -> FailToIO m a
newTVarConc :: a -> FailToIO m (TVar (STM (FailToIO m)) a)
$cnewTVarConc :: forall (m :: * -> *) a.
MonadConc m =>
a -> FailToIO m (TVar (STM (FailToIO m)) a)
atomically :: STM (FailToIO m) a -> FailToIO m a
$catomically :: forall (m :: * -> *) a.
MonadConc m =>
STM (FailToIO m) a -> FailToIO m a
modifyIORefCAS_ :: IORef (FailToIO m) a -> (a -> a) -> FailToIO m ()
$cmodifyIORefCAS_ :: forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a -> (a -> a) -> FailToIO m ()
modifyIORefCAS :: IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b
$cmodifyIORefCAS :: forall (m :: * -> *) a b.
MonadConc m =>
IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b
casIORef :: IORef (FailToIO m) a
-> Ticket (FailToIO m) a
-> a
-> FailToIO m (Bool, Ticket (FailToIO m) a)
$ccasIORef :: forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a
-> Ticket (FailToIO m) a
-> a
-> FailToIO m (Bool, Ticket (FailToIO m) a)
peekTicket' :: Proxy (FailToIO m) -> Ticket (FailToIO m) a -> a
$cpeekTicket' :: forall (m :: * -> *) a.
MonadConc m =>
Proxy (FailToIO m) -> Ticket (FailToIO m) a -> a
readForCAS :: IORef (FailToIO m) a -> FailToIO m (Ticket (FailToIO m) a)
$creadForCAS :: forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a -> FailToIO m (Ticket (FailToIO m) a)
atomicWriteIORef :: IORef (FailToIO m) a -> a -> FailToIO m ()
$catomicWriteIORef :: forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a -> a -> FailToIO m ()
writeIORef :: IORef (FailToIO m) a -> a -> FailToIO m ()
$cwriteIORef :: forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a -> a -> FailToIO m ()
atomicModifyIORef :: IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b
$catomicModifyIORef :: forall (m :: * -> *) a b.
MonadConc m =>
IORef (FailToIO m) a -> (a -> (a, b)) -> FailToIO m b
readIORef :: IORef (FailToIO m) a -> FailToIO m a
$creadIORef :: forall (m :: * -> *) a.
MonadConc m =>
IORef (FailToIO m) a -> FailToIO m a
newIORefN :: String -> a -> FailToIO m (IORef (FailToIO m) a)
$cnewIORefN :: forall (m :: * -> *) a.
MonadConc m =>
String -> a -> FailToIO m (IORef (FailToIO m) a)
newIORef :: a -> FailToIO m (IORef (FailToIO m) a)
$cnewIORef :: forall (m :: * -> *) a.
MonadConc m =>
a -> FailToIO m (IORef (FailToIO m) a)
tryTakeMVar :: MVar (FailToIO m) a -> FailToIO m (Maybe a)
$ctryTakeMVar :: forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> FailToIO m (Maybe a)
takeMVar :: MVar (FailToIO m) a -> FailToIO m a
$ctakeMVar :: forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> FailToIO m a
tryReadMVar :: MVar (FailToIO m) a -> FailToIO m (Maybe a)
$ctryReadMVar :: forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> FailToIO m (Maybe a)
readMVar :: MVar (FailToIO m) a -> FailToIO m a
$creadMVar :: forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> FailToIO m a
tryPutMVar :: MVar (FailToIO m) a -> a -> FailToIO m Bool
$ctryPutMVar :: forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> a -> FailToIO m Bool
putMVar :: MVar (FailToIO m) a -> a -> FailToIO m ()
$cputMVar :: forall (m :: * -> *) a.
MonadConc m =>
MVar (FailToIO m) a -> a -> FailToIO m ()
newEmptyMVarN :: String -> FailToIO m (MVar (FailToIO m) a)
$cnewEmptyMVarN :: forall (m :: * -> *) a.
MonadConc m =>
String -> FailToIO m (MVar (FailToIO m) a)
newEmptyMVar :: FailToIO m (MVar (FailToIO m) a)
$cnewEmptyMVar :: forall (m :: * -> *) a.
MonadConc m =>
FailToIO m (MVar (FailToIO m) a)
threadDelay :: Int -> FailToIO m ()
$cthreadDelay :: forall (m :: * -> *). MonadConc m => Int -> FailToIO m ()
yield :: FailToIO m ()
$cyield :: forall (m :: * -> *). MonadConc m => FailToIO m ()
myThreadId :: FailToIO m (ThreadId (FailToIO m))
$cmyThreadId :: forall (m :: * -> *).
MonadConc m =>
FailToIO m (ThreadId (FailToIO m))
setNumCapabilities :: Int -> FailToIO m ()
$csetNumCapabilities :: forall (m :: * -> *). MonadConc m => Int -> FailToIO m ()
getNumCapabilities :: FailToIO m Int
$cgetNumCapabilities :: forall (m :: * -> *). MonadConc m => FailToIO m Int
isCurrentThreadBound :: FailToIO m Bool
$cisCurrentThreadBound :: forall (m :: * -> *). MonadConc m => FailToIO m Bool
supportsBoundThreads :: FailToIO m Bool
$csupportsBoundThreads :: forall (m :: * -> *). MonadConc m => FailToIO m Bool
forkOSWithUnmaskN :: String
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
$cforkOSWithUnmaskN :: forall (m :: * -> *).
MonadConc m =>
String
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forkOSWithUnmask :: ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
$cforkOSWithUnmask :: forall (m :: * -> *).
MonadConc m =>
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forkOnWithUnmaskN :: String
-> Int
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
$cforkOnWithUnmaskN :: forall (m :: * -> *).
MonadConc m =>
String
-> Int
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forkOnWithUnmask :: Int
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
$cforkOnWithUnmask :: forall (m :: * -> *).
MonadConc m =>
Int
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forkWithUnmaskN :: String
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
$cforkWithUnmaskN :: forall (m :: * -> *).
MonadConc m =>
String
-> ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
forkWithUnmask :: ((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
$cforkWithUnmask :: forall (m :: * -> *).
MonadConc m =>
((forall a. FailToIO m a -> FailToIO m a) -> FailToIO m ())
-> FailToIO m (ThreadId (FailToIO m))
$cp7MonadConc :: forall (m :: * -> *). MonadConc m => Show (ThreadId (FailToIO m))
$cp6MonadConc :: forall (m :: * -> *). MonadConc m => Ord (ThreadId (FailToIO m))
$cp5MonadConc :: forall (m :: * -> *). MonadConc m => MonadSTM (STM (FailToIO m))
$cp4MonadConc :: forall (m :: * -> *). MonadConc m => MonadMask (FailToIO m)
$cp3MonadConc :: forall (m :: * -> *). MonadConc m => MonadThrow (FailToIO m)
$cp2MonadConc :: forall (m :: * -> *). MonadConc m => MonadCatch (FailToIO m)
$cp1MonadConc :: forall (m :: * -> *). MonadConc m => Monad (FailToIO m)
MonadConc
    )

instance MonadIO m => MonadFail (FailToIO m) where
  fail :: String -> FailToIO m a
fail = IO a -> FailToIO m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO a -> FailToIO m a)
-> (String -> IO a) -> String -> FailToIO m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> IO a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail

  {-# INLINE fail #-}

failToIO :: FailToIO m a -> m a
failToIO :: FailToIO m a -> m a
failToIO = FailToIO m a -> m a
coerce

{-# INLINE failToIO #-}