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