A common confusion that arises when using the Glasgow Haskell Compiler is that the \n
character does not print a new line in Haskell, unlike in other languages.
The code below illustrates the issue:
main = print ("line1\nline2")
The \n
character is printed as part of the output in the above code, instead of printing a new line.
Haskell’s print
function does not evaluate escape sequences such as \n
, so the entire expression line1\nline2
is an output.
To print a new line, we can instead use the putStr()
function, which will evaluate the escape sequence. This is shown below:
main = putStr ("line1\nline2")
The putStr()
function evaluates escape characters. So, line1
and line2
appear on separate lines, and the output also does not contain quotation marks. This is unlike when we used the print
function.