MonadTransクラスでは:
class MonadTrans t where
-- | Lift a computation from the argument monad to the constructed monad.
lift :: Monad m => m a -> t m a
t m
モナドであることに制約されないのはなぜですか? つまり、次の理由はありません。
{-# LANGUAGE MultiParamTypeClasses #-}
class Monad (t m) => MonadTrans t m where
lift :: Monad m => m a -> t m a
答えが「その通りだから」なら、それでいいのです。n008 にとっては紛らわしいだけです。