
On 28 October 2011 16:23, Antoine Latter
I would then need OverlappingInstances to declare a MonadIO instance for any similar looking instance head (that is `t m`) where 't' was not a proper MonadTrans instance, which sounds like a common enough things to do.
I actually have never seen a MonadIO instance for a `t m` where 't' is
not a MonadTrans instance.
On 28 October 2011 16:24, Paterson, Ross
It's done that way in transformers to keep the package portable. As for doing it elsewhere, although this catch-all instance requires UndecidableInstances, I don't think it introduces non-termination.
I understand, portability is important for transformers. For monad-control it's less of an issue because I already use other language extensions (incl. RankNTypes). So I think I go ahead and add a catch-all instance for MonadControlIO to monad-control. Thanks for your responses, Bas