packages feed

systemd-socket-activation-1.1.0.1: src/SocketActivation/IO.hs

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' { run :: IO (Either Error a) }
    deriving (Functor, Applicative, Monad, MonadIO) via ExceptT Error IO

throwError :: Error -> IO' a
throwError = IO' . pure . Left