Функция print
Функция print принимает значение любого типа – экземпляра класса Show (то есть мы знаем, как представить значение этого типа в виде строки), вызывает функцию show, чтобы получить из данного значения строку, и затем выводит её на экран. По сути, это putStrLn.show. Это выражение сначала вызывает функцию show на переданном параметре, а затем «скармливает» результат функции putStrLn, которая возвращает действие ввода-вывода; оно, в свою очередь, печатает заданное значение.
main = do
print True
print 2
print "ха-ха"
print 3.2
print [3,4,3]
После компиляции и запуска получаем:
True
2
"ха-ха"
3.2
[3,4,3]
Как вы могли заметить, это очень полезная функция. Помните, мы говорили о том, что действия ввода-вывода выполняются только из функции main или когда мы выполняем их в интерпретаторе GHCi? После того как мы напечатаем значение (например, 3 или [1, 2, 3]) и нажмём клавишу «Ввод», интерпретатор GHCi вызовет функцию print с введённым значением для вывода на терминал!
ghci> 3
3
ghci> print 3
3
ghci> map (++"!") ["хей","хо","ууу"]
["хей!","хо!","ууу!"]
ghci> print $ map (++"!") ["хей","хо","ууу"]
["хей!","хо!","ууу!"]
Как правило, мы хотим видеть строку на экране, не заключённую в кавычки, поэтому для печати строк обычно используется функция putStrLn. Но для печати значений других типов преимущественно используется функция print.