Difference between print and putStrLn in Haskell
I am confused. I tried to use print
, but I know people apply putStrLn
. What are the real differences between them?
print $ function
putStrLn $ function
The function putStrLn
takes a String
and displays it to the screen, followed by a newline character (put a String followed by a new Line).
Because it only works with String
s, a common idiom is to take any object, convert it to a String
, and then apply putStrLn
to display it. The generic way to convert an object to a String
is with the show
function, so your code would end up with a lot of
putStrLn (show 1)
putStrLn (show [1, 2, 3])
putStrLn (show (Just 42))
Once you notice that, it's not a very big stretch to define a function that converts to a String
and displays the string in one step
print x = putStrLn (show x)
which is exactly what the print
function is.