1.6.1. ПРОВЕРКИ И ПРЕДИКАТЫ

В некоторых случаях в процессе работы программы требуется проверить справедливость некоторого условия и, в зависимости от результатов проверки, направить вычисления либо по одному, либо по другому пути.

При программировании на Рефале Плюс мы будем придерживаться следующего соглашения. Тропа Q будет называться условием, если результатом ее вычисления является либо пустое объектное выражение, либо неуспех. Если результат - пустое выражение, мы считаем, что условие выполнено, а если результат - неуспех, мы считаем, что условие не выполнено. Таким образом, пустой результат означает, что результат проверки - "истина", а неуспех означает, что результат проверки - "ложь".

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

Некоторые функции входящие в библиотеку функций используются только для проверки условий. Такие функции называются предикатами. В Рефале Плюс функции-предикаты выдают пустое выражение, если их аргументы удовлетворяют условию и выдают неуспех в случае, если их аргументы не удовлетворяют условию. Например, функция "<" проверяет, что ее первый аргумент меньше второго. А именно, результатом вычисления вызова вида <"<" (Oe1)(Oe2)> является пустое выражение, если объектное выражение Oe1 "меньше" чем объектное выражение Oe2. Если же это не так - результатом является неуспех.

Если в программе определяется некоторая функция-предикат, ее объявление должно иметь следующий вид:

$func? Fname Fin = ;

Дальше мы рассмотрим различные способы использования и комбинирования условий.