Новосибирский Государственный Университет
Опубликован: 05.02.2007 | Доступ: свободный | Студентов: 2099 / 355 | Оценка: 4.30 / 4.23 | Длительность: 10:15:00
Лекция 9:

Оперирование вычислениями

< Лекция 8 || Лекция 9: 12 || Лекция 10 >

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

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

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

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

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

(Defun super  ()  ; Внешний уровень – обработчик внутренних событий
 (catch 'abort ; Имя обрабатываемого внутреннего события
    (sub)         ; Вызов формы,  в которой возможно данное событие
      (print "It is impossible")   ; Реакция на событие
) )
(Defun sub  ()  ;  Внутренний уровень
  (throw 'abort 99)   ; Вызов события
)
(super) ; Вызов формы, контролирующей внутренние события.
9.3. Обработка событий при взаимодействии функций
Таблица 9.1. Clisp: Функции управления вычислениями
(And Форма … ) Вычисляет формы, пока не наткнетсяя на Nil
(Case Значение ( Ключ Форма) … ) По значению, совпадающему с Ключем, выбирает форму, которую вычисляет
(Catch Атом Форма …) Работает в паре с throw. Устанавливает ловушку, идентифицируемую Атомом внутри Форм.
(Cond (Предикат Форма) … ) Ветвление
(If Предикат Да-форма Нет-форма ) Обычное условное выражение
(Or Форма … ) Вычисляет формы , пока не найдет отличную от Nil/
(Throw Атом Форма ) Работает в паре с Catch. Форма задает реакцию на обнаруженную ловушку Атом.
(Unless Предикат Форма … ) Вычисляет формы если предикат имеет значение Nil
(When Предикат Форма … ) Вычисляет формы при истином значении предиката.

Выводы:

  • Замедленные вычисления могут быть результативнее и эффективнее обычных.
  • Хранимые вместе с данными рецепты их вычислений позволяют работать с бесконечными множествами.
  • В ряде случаев возможно получение полного результата при неопределенных значениях частей.
< Лекция 8 || Лекция 9: 12 || Лекция 10 >
Юрий Семевский
Юрий Семевский
Россия, Санкт-Петербург
Атанас Маринов
Атанас Маринов
Болгария