Dear Jon, dear Simon,
> > > class (Monad m, Monad (t m)) => AMonadT t m where
> > > lift :: m a -> t m a
> I'm frankly unsure of the consequences of lifting the
> restriction. Can you give a compact summary of why you want
> to? Our multi-parameter type-class paper gives none, and if
> you've got one I'd like to add it.
I would suspect that the context `only' lists an invariant which
should hold and that one can do with `class (Monad m) =>' alone.
Give it a try (it worked for me all (most?) of the time).
Cheers, Ralf