[Haskell-cafe] Monadic tunnelling: the art of threading one monad through another