Введение в программирование на Лиспе

         

Работа с событиями


Наиболее общая модель организации процессов сводится к определению реакций на происходящие события. Событий конечное число. Работа с событиями в системе Clisp обеспечивается парой функций:

Throw – вызов события.

Catch – обработка события (реакция на событие).

Процесс с событиями проиллюстрирован следующим примером Грехема [ 10 ] как взаимодействие функций, работающих на разных уровнях:

(Defun super () ; Внешний уровень – обработчик внутренних событий (catch 'abort ; Имя обрабатваемого внутреннего события (sub) ; Вызов формы, в которой возможно данное событие (print "It is impossible") ; Реакция на событие ) ) (Defun sub () ; Внутренний уровень (throw 'abort 99) ; Вызов события ) (super) ; Вызов формы, контролирующей внутренние события.

Пример 9.3. Обработка событий при взаимодействии функций (html, txt)

Таблица 9.1. Clisp: Функции управления вычислениями

(And Форма … )Вычисляет формы, пока не наткнетсяя на Nil
(Case Значение ( Ключ Форма) … )По значению, совпадающему с Ключем, выбирает форму, которую вычисляет
(Catch Атом Форма …)Работает в паре с throw. Устанавливает ловушку, идентифицируемую Атомом внутри Форм.
(Cond (Предикат Форма) … )Ветвление
(If Предикат Да-форма Нет-форма )Обычное условное выражение
(Or Форма … )Вычисляет формы , пока не найдет отличную от Nil/
(Throw Атом Форма )Работает в паре с Catch. Форма задает реакцию на обнаруженную ловушку Атом.
(Unless Предикат Форма … )Вычисляет формы если предикат имеет значение Nil
(When Предикат Форма … )Вычисляет формы при истином значении предиката.



Содержание раздела