module Control.Monad.Trans.Has.Reader
  ( module Control.Monad.Trans.Has.Reader
  , module X
  ) where

import "transformers" Control.Monad.Trans.Reader
  qualified as Reader
import "transformers" Control.Monad.Trans.Reader
  as X (ReaderT(..))

import "this" Control.Monad.Trans.Has

type HasReader r m = Has (ReaderT r) m

ask :: HasReader r m => m r
ask :: m r
ask = (forall (n :: * -> *). Monad n => ReaderT r n r) -> m r
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
Has t m =>
(forall (n :: * -> *). Monad n => t n a) -> m a
liftH forall (n :: * -> *). Monad n => ReaderT r n r
forall (m :: * -> *) r. Monad m => ReaderT r m r
Reader.ask