На этом шаге мы перечислим эти функции.
Функции ввода производят чтение данных из стандартного устройства ввода (пользовательская клавиатура).
1. Функция, считывающая символ из стандартного потока ввода:
getChar:: IO Char getChar
Например:
> getChar > getChar q 9
2. Функция, считывающая строку с клавиатуры и возвращающая считанную строку, "обёрнутую" в монаду IO:
getLine:: IO String getLine
Например:
> getLine > getLine "qwe qwe" " "
3. Функция, возвращающая весь пользовательский ввод в виде одной строки, которая считывается "лениво", т.е. по мере надобности:
getContents:: IO String getContents
Например:
> getContents "123456"
Ввод строки останавливает нажатие клавиш "Ctrl+Z".
4. Функция получает в качестве аргумента функцию типа String -> String и весь ввод из стандартного устройства ввода передаётся на вход этой функции. Результирующая строка выводится на стандартное устройство вывода.
interact:: (String -> String) -> IO () interact
Например:
main = interact fun ---------------------- fun:: String -> String fun x = x++"111"
5. Функция, преобразующая строку в значение с предупреждением монады ввода-вывода об ошибке разбора:
readIO 0:: Read a => String -> IO a readIO
6. Функция, считывающая строку с клавиатуры и возвращающая считанную строку, "обёрнутую" в монаду IO с предупреждением монады ввода-вывода об ошибке разбора (другими словами, эта функция объединяет действия функций getLine и readIO):
readLn 0:: Read a => IO a readLn
На следующем шаге мы рассмотрим функции ввода-вывода для работы с файлами символов.