Функция putChar
Функция putChar принимает символ и возвращает действие ввода-вывода, которое напечатает его на терминале.
main = do
putChar 'A'
putChar 'Б'
putChar 'В'
Функция putStr определена рекурсивно с помощью функции putChar. Базовый случай для функции putStr – это пустая строка. Если печатаемая строка пуста, функция возвращает пустое действие ввода-вывода, то есть return (). Если строка не пуста, функция выводит на терминал первый символ этой строки, вызывая функцию putChar, а затем выводит остальные символы, снова рекурсивно вызывая саму себя.
putStr :: String –> IO ()
putStr [] = return ()
putStr (x:xs) = do
putChar x
putStr xs
Как вы заметили, мы можем использовать рекурсию в системе ввода-вывода подобно тому, как делаем это в чистом коде. Точно так же образом мы определяем базовые случаи, а затем думаем, что будет результатом. В результате мы получим действие, которое выведет первый символ, а затем остаток строки.