{-# LANGUAGE TypeFamilies, NoMonomorphismRestriction, NoImplicitPrelude, MultiParamTypeClasses, FlexibleInstances, FlexibleContexts, UndecidableInstances #-}
{-# LANGUAGE CPP #-}
#if __GLASGOW_HASKELL__>=700
{-# LANGUAGE RebindableSyntax #-}
#endif

module Control.RMonad.Trans where

import Control.RMonad.Prelude

class RMonadTrans t where
  lift :: (RMonad m, Suitable m a, Suitable (t m) a) => m a -> t m a

class RMonad m => RMonadIO m where
  liftIO :: Suitable m a => IO a -> m a

instance RMonadIO IO where
  liftIO = id