[Haskell-cafe] How do I do conditional tail recursion in a monad?