Основы функционального программирования/Haskell/Ввод-вывод: различия между версиями

Содержимое удалено Содержимое добавлено
м Шаблон со списком лекций
Замена странного чёрного квадрата на '->'
Строка 19:
putChar :: Char -> IO ()
 
Друг с другом действия связываются при помощи оператора связывания. Т.е. символы >>= выстраивают последовательность действий. Как известно, вместо этой функции можно использовать служебное слово do. Оно использует такой же двумерный синтексис, как и слова let и where, поэтому можно не использовать для разделения вызова функций символ « ; ». При помощи слова do можно связывать вызовы функций, определение данных (при помощи символасимволов « -> ») и множество определений локальных переменных (служебное слово let).
 
Например, так можно определить программу, которая читает символ с клавиатуры и выводит его на экран:
Строка 76:
Что делать, если в процессе операций ввода/вывода возникла неординарная ситуация? Например, функция getChar обнаружила конец файла. В этом случае произойдет ошибка. Как и любой продвинутый язык программирования Haskell предлагает для этих целей механизм обработки исключений. Для этого не используется какой-то специальный синтаксис, но есть специальный тип IOError, который содержит описания всех возникаемых в процессе ввода/вывода ошибок.
 
Обработчик исключений имеет тип (IOError -> IO a), при этом функция catch ассоциирует (связывает) обработчик исключений с набором действий:
 
catch :: IO a -> (IOError -> IO a) -> IO a