Интернет магазин китайских планшетных компьютеров



Компьютеры - Охрана (программирование)

19 февраля 2011





Охрана — логическое выражение, которое предназначено для ограничения вычислительных процессов и направления их по определённому направлению в зависимости от условия охраны. Обычно, используется в функциональных языках программирования.

Примеры охраняющих выражений

Все последующие охраняющие выражения приведены на функциональном языке Haskell, в котором эта технология используется очень часто. Все такие выражения выделены в кодах полужирным начертанием.

Пример 1 — Списочные включения

Функция divisors возвращает список делителей заданного числа n. Во второй строке определения показана охрана, которая ограничивает выбор элемента списка делителей x только таким значением, которое делит исходный параметр n без остатка.

divisors n =,
                  n `mod` x == 0]

Пример 2 — Охрана в теле функции

Функция sign возвращает знак заданного числа x. Охраняющие выражения записаны после символов. Они позволяют выбрать ту или иную альтернативу при вычислении знака числа. Такой способ охранения часто используется вместо механизма сопоставления по образцу, когда в функции нет возможности явно описать образец.

sign x | x < 0  = -1
       | x == 0 = 0
       | x > 0  = 1

Оформление в виде охраны позволяет в случае недопустимого выражения для сопоставления перейти к следующему. В случае, если предыдущий пример будет оформлен как клоз, в котором произходит сопоставление с образцами, то при x = 0 первое сопоставление вызовет ошибку, обработчик которой прекратит дальнейшие попытки на сопоставление. Кроме того, для случая неистинности всех выражений, удобно отлавливать такие ситуации установкой непосредственного значения истиности True. Для удобочитаемости, в стандартной библиотеке Prelude имеется константа otherwise, что внешне ещё более напоминает переключатель в алгоритмических языках.



Просмотров: 990


<<< Модель Крипке
Принцип подстановки Лисков >>>