在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
限制为 Monad?即,为什么不:
{-# LANGUAGE MultiParamTypeClasses #-}
class Monad (t m) => MonadTrans t m where
lift :: Monad m => m a -> t m a
如果答案是“因为它就是这样”,那很好——这只是让 n008 感到困惑。