Наиболее нормализованный и ненавязчивый ответ: -
, поскольку Monad зависит от класса Applicative
. Аппликативный m => Monad m где ...
blockquote>и Аппликация зависит от класса Functor
. Функтор f => Аппликативный f, где ...
blockquote>нам нужны определения экземпляров
> instance Functor Wrapped where > fmap = liftM
и
> instance Applicative Wrapped where > pure = return > (<*>) = ap