module SocketActivation.IO where import Essentials import Control.Monad.IO.Class (MonadIO) import Control.Monad.Trans.Except (ExceptT (..)) import Data.Either (Either (Left)) import System.IO (IO) import SocketActivation.Concepts (Error) newtype IO' a = IO' { forall a. IO' a -> IO (Either Error a) run :: IO (Either Error a) } deriving ((forall a b. (a -> b) -> IO' a -> IO' b) -> (forall a b. a -> IO' b -> IO' a) -> Functor IO' forall a b. a -> IO' b -> IO' a forall a b. (a -> b) -> IO' a -> IO' b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f $cfmap :: forall a b. (a -> b) -> IO' a -> IO' b fmap :: forall a b. (a -> b) -> IO' a -> IO' b $c<$ :: forall a b. a -> IO' b -> IO' a <$ :: forall a b. a -> IO' b -> IO' a Functor, Functor IO' Functor IO' => (forall a. a -> IO' a) -> (forall a b. IO' (a -> b) -> IO' a -> IO' b) -> (forall a b c. (a -> b -> c) -> IO' a -> IO' b -> IO' c) -> (forall a b. IO' a -> IO' b -> IO' b) -> (forall a b. IO' a -> IO' b -> IO' a) -> Applicative IO' forall a. a -> IO' a forall a b. IO' a -> IO' b -> IO' a forall a b. IO' a -> IO' b -> IO' b forall a b. IO' (a -> b) -> IO' a -> IO' b forall a b c. (a -> b -> c) -> IO' a -> IO' b -> IO' 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 $cpure :: forall a. a -> IO' a pure :: forall a. a -> IO' a $c<*> :: forall a b. IO' (a -> b) -> IO' a -> IO' b <*> :: forall a b. IO' (a -> b) -> IO' a -> IO' b $cliftA2 :: forall a b c. (a -> b -> c) -> IO' a -> IO' b -> IO' c liftA2 :: forall a b c. (a -> b -> c) -> IO' a -> IO' b -> IO' c $c*> :: forall a b. IO' a -> IO' b -> IO' b *> :: forall a b. IO' a -> IO' b -> IO' b $c<* :: forall a b. IO' a -> IO' b -> IO' a <* :: forall a b. IO' a -> IO' b -> IO' a Applicative, Applicative IO' Applicative IO' => (forall a b. IO' a -> (a -> IO' b) -> IO' b) -> (forall a b. IO' a -> IO' b -> IO' b) -> (forall a. a -> IO' a) -> Monad IO' forall a. a -> IO' a forall a b. IO' a -> IO' b -> IO' b forall a b. IO' a -> (a -> IO' b) -> IO' 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 $c>>= :: forall a b. IO' a -> (a -> IO' b) -> IO' b >>= :: forall a b. IO' a -> (a -> IO' b) -> IO' b $c>> :: forall a b. IO' a -> IO' b -> IO' b >> :: forall a b. IO' a -> IO' b -> IO' b $creturn :: forall a. a -> IO' a return :: forall a. a -> IO' a Monad, Monad IO' Monad IO' => (forall a. IO a -> IO' a) -> MonadIO IO' forall a. IO a -> IO' a forall (m :: * -> *). Monad m => (forall a. IO a -> m a) -> MonadIO m $cliftIO :: forall a. IO a -> IO' a liftIO :: forall a. IO a -> IO' a MonadIO) via ExceptT Error IO throwError :: Error -> IO' a throwError :: forall a. Error -> IO' a throwError = IO (Either Error a) -> IO' a forall a. IO (Either Error a) -> IO' a IO' (IO (Either Error a) -> IO' a) -> (Error -> IO (Either Error a)) -> Error -> IO' a forall b c a. (b -> c) -> (a -> b) -> a -> c forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . Either Error a -> IO (Either Error a) forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (Either Error a -> IO (Either Error a)) -> (Error -> Either Error a) -> Error -> IO (Either Error a) forall b c a. (b -> c) -> (a -> b) -> a -> c forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . Error -> Either Error a forall a b. a -> Either a b Left