もなもなモナド ReaderモナドとWriterモナドの合成について

疑問には答えられてないんですが、lift,liftMはいらないのかな、と。

*Main> :i MonadReader
class (Monad m) => MonadReader r m | m -> r where
  ask :: m r
  local :: (r -> r) -> m a -> m a
        -- Defined in Control.Monad.Reader.Class
instance (Monoid w, MonadReader r m) => MonadReader r (WriterT w m)
  -- Defined in Control.Monad.Writer.Lazy
(以下、略)

だから

main3 = runReader (runWriterT (sum_leaf_wr sample)) ""

sum_leaf_wr :: T -> WriterT [String] (Reader String) Int
sum_leaf_wr (L n) = do
  parent <- ask
  tell ["parent:" ++ parent ++ ", " ++ show n]
  return n

sum_leaf_wr (B parent children) = do
  n_list <- mapM (local (const parent) . sum_leaf_wr) children
  return (sum n_list)