    -- | The multi-valued version of mtl's MonadWriter
    module Control.Monad.Trans.MultiWriter.Class
      (
      -- * MonadMultiWriter class
        MonadMultiWriter(..)
      )
    where

    import Control.Monad.Trans.Class  ( MonadTrans
                                      , lift )

    import Data.Monoid

    -- TODO: some haddock
    class (Monad m, Monoid a) => MonadMultiWriter a m where
      mTell :: a -> m ()

    instance (MonadTrans t, Monad (t m), MonadMultiWriter a m)
          => MonadMultiWriter a (t m) where
      mTell :: a -> t m ()
    mTell = m () -> t m ()
    forall (m :: * -> *) a. Monad m => m a -> t m a
    forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
    (MonadTrans t, Monad m) =>
    m a -> t m a
    lift (m () -> t m ()) -> (a -> m ()) -> a -> t m ()
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . a -> m ()
    forall a (m :: * -> *). MonadMultiWriter a m => a -> m ()
    mTell