instance MonadPlus m => MonadPlus (MyTrans m a) where
mzero = MyTrans (ErrorT mzero)
MyTrans (ErrorT m) `mplus` MyTrans (ErrorT n) = MyTrans (ErrorT (m `mplus` n))
Beware: I have only verified that this has the behavior you asked for, and not checked that it satisfies the MonadPlus
laws. Chances are good that it violates some or all of them! Use at your own risk.