{-# 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 #-}