Hello Emmanuel,

And I tried to apply it to the haskell fay compiler, but failed:
http://stackoverflow.com/questions/18667530/dont-understand-this-liftm2-behaviour-in-fay

Not sure whether it's a fay bug or something about the fay monad or liftM2 which i don't understand.

The point of lifting is, that you lift an operation into an other "context", so
that the operation itself hasn't to operate in the same "context".

I can't see how even your GHC version of 'operation' should work,
because in both cases it should be something like:

liftM2 (++) getValue1 getValue2

or in applicative style

(++) <$> getValue1 <*> getValue2


Greetings,
Daniel