Yes, I agree there is no need in the GHC version to wrap it with return, you can imagine that "operation" instead asks the user through the command line which operation to do, (++) or just pick the first or the second string for instance. In that case it would really need the IO monad and that is my situation.
I didn't take the time to code it for the purpose of the example but that is my problem. In that case liftM2 offers me a solution, I can use it also to call functions operating in another monad than the one the parameters are in. In Fay I have that problem with Fay monad, and I don't know why. It's more a Fay question, but Fay normally uses GHC for typecheck so I thought it's maybe something with the Fay monad that is obvious for someone more knowledgeable than me.
emmanuel