The show function in Haskell doesn\'t seem to do what it should:
Prelude> let str = \"stack\\n\\noverflow\" Prelude> putStrLn str stack overfl
The contract of the show method in Haskell is that it produce a string that, when evaluated, yields the value that was shown.
Prelude> let str = "stack\n\noverflow" Prelude> putStrLn str stack overflow Prelude> putStrLn (show str) "stack\n\noverflow" Prelude>