В 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.