Я хочу, чтобы мой преобразователь монады был экземпляром MonadError
, если преобразованная монада является экземпляром. В основном я хочу, чтобы мой преобразователь вел себя так же, как встроенные преобразователи, например, есть экземпляр MonadError
для StateT
:
MonadError e m => MonadError e (StateT s m)
Я пытался сделать это:
instance MonadError e m => MonadError e (MyMonadT m)
Но GHC начал жаловаться на неразрешимые экземпляры, по-видимому, библиотека MTL просто разрешает неразрешимые экземпляры, но есть ли способ избежать этого? Или в этом случае все нормально и проблем не будет?