> class (Monad m, Monad (t m)) => MonadT t m where
> lift :: m a -> t m a
>
> instance (Monad m, Monad (StateT s m)) => MonadT (StateT s) m where
> lift m = \s -> m >>= \x -> return (s,x)
>
> If the definitions from the paper can be turned into valid
> Haskell 98 w.l.o.g. now, then I'm happy.
No, neither can, and that's not going to change for
Haskell 98. There is a raft of generalisations to the class
system (implemented in Hugs and GHC) but which would require
a much bigger upheaval to Haskell 98. They are all going to
be in Haskell 2 (IMHO). But for H98, sorry.
S