{-# LANGUAGE CPP #-}
{-# LANGUAGE ConstraintKinds #-}
module Foundation.Monad.MonadIO
    ( MonadIO(..)
    ) where

#if MIN_VERSION_base(4,9,0)
import Control.Monad.IO.Class
#else
import Basement.Compat.Base
import Basement.Compat.AMP

-- | Monads in which 'IO' computations may be embedded.
class AMPMonad m => MonadIO m where
    -- | Lift a computation from the 'IO' monad.
    liftIO :: IO a -> m a

instance MonadIO IO where
    liftIO io = io

#endif