У меня есть следующее newtype
:
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
newtype Wrap m a = Wrap {runWrap :: m a}
deriving (Functor, Applicative, Monad, MonadTrans)
Я пытаюсь автоматически вывести MonadTrans
, но получаю следующую ошибку:
• Can't make a derived instance of ‘MonadTrans Wrap’
(even with cunning GeneralizedNewtypeDeriving):
cannot eta-reduce the representation type enough
• In the newtype declaration for ‘Wrap’
Однако написание тривиального экземпляра для MonadTrans
прекрасно работает:
instance MonadTrans Wrap where
lift = Wrap
В чем причина такого сообщения об ошибке?