    module RIO.Prelude.Exit
      ( exitFailure
      , exitSuccess
      , exitWith
      , System.Exit.ExitCode(..)
      ) where

    import           Control.Monad.IO.Class
    import qualified System.Exit ( ExitCode (..)
                                 , exitFailure
                                 , exitSuccess
                                 , exitWith
                                 )

    -- | Lifted version of "System.Exit.exitFailure".

    --

    -- @since 0.1.9.0.

    exitFailure :: MonadIO m => m a
    exitFailure :: forall (m :: * -> *) a. MonadIO m => m a
    exitFailure = IO a -> m a
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO IO a
    forall a. IO a
    System.Exit.exitFailure

    -- | Lifted version of "System.Exit.exitSuccess".

    --

    -- @since 0.1.9.0.

    exitSuccess :: MonadIO m => m a
    exitSuccess :: forall (m :: * -> *) a. MonadIO m => m a
    exitSuccess = IO a -> m a
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO IO a
    forall a. IO a
    System.Exit.exitSuccess

    -- | Lifted version of "System.Exit.exitWith".

    --

    -- @since 0.1.9.0.

    exitWith :: MonadIO m => System.Exit.ExitCode -> m a
    exitWith :: forall (m :: * -> *) a. MonadIO m => ExitCode -> m a
    exitWith ExitCode
    code = IO a -> m a
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO a -> m a) -> IO a -> m a
    forall a b. (a -> b) -> a -> b
    $ ExitCode -> IO a
    forall a. ExitCode -> IO a
    System.Exit.exitWith ExitCode
    code