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