Is there a reason why the lift function in ReaderT's MonadTrans
instance is implemented as:

instance MonadTrans (ReaderT r) where
    lift m = ReaderT $ \_ -> m


Instead of just using the monad's return function?     Could  "lift m"
be implemented as "return m"?


instance (Monad m) => Monad (ReaderT r m) where
   * return a = ReaderT $ \_ -> return a*
    m >>= k  = ReaderT $ \r -> do
        a <- runReaderT m r
        runReaderT (k a) r
    fail msg = ReaderT $ \_ -> fail msg


Thanks,

Daryoush
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to