Cтраница 3
Для проверки типа терма существуют специальные встроенные предикаты. [31]
Кроме того, предполагается использование всевозможных встроенных предикатов. Встроенный предикат-это такой предикат, который является частью Пролога и для которого пользователю нет необходимости записывать процедуру. Любая Пролог-система поставляется вместе с большим числом таких предикатов. Часть из них обеспечивает возможности, которые вообще нельзя реализовать в Прологе. Другая их часть предоставляет весьма полезные возможности, которые избавляют программиста от написания собственных процедур. [32]
Определяется произвольный оператор путем вызова встроенного предиката ор. [33]
При выполнении правила Дейталога со встроенными предикатами необходимо соблюдать следующий принцип: вычисление встроенного предиката откладывается до тех пор, пока все его переменные не будут связаны константами. Исключение здесь можно ( иногда даже нужно) сделать для предиката равенства. Предикат равенства можно вычислять, как только один из его аргументов либо является константой, либо связан константой. [34]
Большая часть работы здесь осуществляется встроенным предикатом dir, который выводит на экран меню опций и позволяет выбрать одну из них. [35]
Если в используемой реализации Пролога отсутствует встроенный предикат findall, то его легко запрограммировать следующим образом. [36]
Проверке термов на равенство служат несколько встроенных предикатов. [37]
Очевидно, в данном случае нужно использовать встроенный предикат findall. Однако findall имеет весьма жесткую внутреннюю грамматику, поэтому нам придется изменить форму компоновки в синтезе, прежде чем удастся собрать вместе все реактанты. [38]
Средства отладки приводятся в действие при помощи системно-зависимых встроенных предикатов. [39]
![]() |
Процедура подстановки в терм вместо одного из его подтермов некоторого другого подтерма. [40] |
Эту трудность можно обойти при помощи еще одного встроенного предиката call ( вызов), чьим аргументом является цель, подлежащая вычислению. [41]
Для того чтобы вынудить Пролог совершать возвраты, используется встроенный предикат fail, который при вызове его в качестве цели всегда дает отказ. Мы могли бы использовать этот предикат и в программе, выдающей таблицу истинности, которая была рассмотрена в подразд. [42]
Отметим, что в записи неравенств и сумм используются встроенные предикаты, которые уже использовались в методе подсчета. Здесь также используется отрицание. [43]
Приведенный выше пример показывает, что для программ, содержащих встроенные предикаты, необходимо дополнительное условие безопасности. Для этого достаточно потребовать, чтобы каждая переменная, являющаяся аргументом встроенного предиката в теле правила, либо входила в обычный предикат в теле того же правила, либо была связана предикатом равенства ( или последовательностью предикатов равенства) с переменной такого обычного предиката или с константой. [44]
Покажите, что условие безопасности для программ Деиталога со встроенными предикатами, приведенное в разд. [45]