Знайте, Intuit, лекция, основните операции вход

7.2. О - Последователни входни операции

Вид конструктор IO е инстанция на класа Монада. Две монадно 'свързващи функции, методи Монада клас. използвана за производство на последователности на I - О. Функция >> се използва, когато на първия резултат операция не представлява интерес, например, когато тя представлява (). Операция >> = предава резултата от първата операция през втората операция като аргумент.

сходен с предишния пример с помощта си взаимодействат. но ще получи своя принос от страна на "входно-файла" и пише своята продукция на "изход-файл". Преди приключването на програмата на стандартно съобщение изход за печат.

нотация задачи позволява програмиране в по-наложително синтактично стил. Малко по-сложна версия на предишния пример ще бъде програма за:

Функцията за връщане се използва за определяне на резултата от въвеждане на експлоатация - изход. Например, getLine определя от гледна точка getChar. Използването на връщане да се определи резултата:

7.3. Обработка на изключенията във вложените в монада - изход

Монада вход - изход се състои от единна система обработка на изключения. Всяка дейност, вход - изход може да предизвика изключение вместо връщане на резултат.

Изключения в вход монада - изходните стойности са представени тип IOError. Това е абстрактно тип: неговите дизайнери са скрити от потребителя. IO библиотека дефинира функции, които конструират и изучават ценностите IOError. Единствената функция на Prelude. който създава стойност IOError. е userError. Стойности за грешки включват низ, описващ грешка.

Изключения са повдигнати и уловени с помощта на следните функции:

функция ioError извиква изключение; функция улов определя манипулатор, който получава никакво изключение. индуцирана от защитен улова. Изключение е хванат от новата процесорна набор улов. Тези манипулатори не са селективни: те хване всички изключения.

Разпределение на изключения трябва да бъде изрично предвидено в манипулатор чрез изземване нежелани изключения. Например, в

връща F [], когато съществува изключение г края на файла, в противен случай изключение премина към следващата външен манипулатор. isEOFError опция е част от библиотеката IO.

Когато по изключение се пренася извън основната програма, системата показва Haskell свързано стойност IOError и излиза от програмата.

провали метод например клас IO Монада (раздел "6.3.6") е userError, както следва: