#if defined(__GLASGOW_HASKELL__) && (__GLASGOW_HASKELL__ >= 702)
#else
#warning "This module is not using SafeHaskell"
#endif
module LIO.MonadLIO where
import LIO.TCB
#if defined(__GLASGOW_HASKELL__) && (__GLASGOW_HASKELL__ >= 702)
#warning "Did not safely import Control.Monad.Trans"
import Control.Monad.Trans (MonadTrans(..))
#else
import Control.Monad.Trans (MonadTrans(..))
#endif
class (Monad m, Label l) => MonadLIO m l s | m -> l s where
liftLIO :: LIO l s a -> m a
liftIO :: LIO l s a -> m a
liftIO = liftLIO
instance (Label l) => MonadLIO (LIO l s) l s where
liftLIO = id
instance (MonadLIO m l s, MonadTrans t, Monad (t m)) => MonadLIO (t m) l s where
liftLIO = lift . liftLIO