我想让我的 monad 转换器成为一个实例,MonadError
如果转换后的 monad 是一个实例。基本上我希望我的变压器表现得像内置变压器一样,例如有一个MonadError
实例StateT
:
MonadError e m => MonadError e (StateT s m)
我试过这样做:
instance MonadError e m => MonadError e (MyMonadT m)
但是 GHC 开始抱怨 undecidable 实例,显然 MTL 库只是启用了 undecidable 实例,但是有什么办法可以避免这种情况呢?还是在这种情况下没问题,不会造成任何问题?