Обратите внимание, что вызов show для него ускользнет от новой строки (или любых других метасимволов), поэтому не делайте foo ++ (show "\n") или foo ++ (show '\n') - просто используйте foo ++ "\n".
Также обратите внимание, что если вы просто оцениваете строковое выражение в GHCi без использования putStr или putStrLn, он просто вызовет show для него, поэтому, например, строка "foo\n" будет отображаться как "foo\n" в GHCi, но это не меняет того факта, что это строка, содержащая символ новой строки, и она будет напечатана таким образом, как только вы выведете ее, используя putStr.