Программирование на языке Пролог | страница 96
Пролог предоставляет специальную форму записи, позволяющую более удобно задавать предикаты consult и reconsult в качестве целевых утверждений, особенно в случае, когда вы хотите ввести более чем один файл. Для этого достаточно просто записать совокупность имен файлов (как атомов Пролога) в виде списка и задать этот список в качестве целевого утверждения. Если вы хотите, чтобы содержимое файла было просто добавлено к базе данных (consult), то имя такого файла записывается в списке в том виде, как оно есть, если же вы хотите, чтобы при этом произошла замена уже имеющихся одинаковых предикатов (reconsult), то перед именем файла ставится знак '-' (минус). Так, например, вопрос
?- [файл1,-файл2,'фред.1',-'билл.2'].
полностью эквивалентен следующему, но более длинному;
?- consult(файл1), reconsult(файл2), consult('фред:1'), reconsult('билл.2').
Списковая форма сводится к удобству записи, она не дает каких-либо дополнительных возможностей по сравнению с использованием предикатов consult и reconsult. Некоторые реализации Пролога могут использовать в списковой форме записи вместо знака '-' какой-нибудь иной знак, но эффект при этом останется прежним.
6.2. Выполнение и невыполнение целевого утверждения
При нормальном выполнении программы на Прологе целевое утверждение считается согласованным (с базой данных), когда это может быть доказано, и несогласованным в случае, когда доказательства найти не удается. В языке имеются два предиката, позволяющих удобно и явным образом определить случаи, когда целевое утверждение считается согласованным и когда несогласованным. Это предикаты true и fail.
Это целевое утверждение всегда согласуется с базой данных. В действительности этот предикат не является необходимым, так как утверждения в базе данных и цели могут быть переупорядочены или перегруппированы так, чтобы избежать использования предиката true. Однако для удобства он входит в состав встроенных предикатов.
Это целевое утверждение никогда не согласуется с базой данных. Имеются две ситуации, когда этот предикат оказывается полезным. Одна из них – это использование комбинации !- fail, которая уже была описана в разд. 4.3. Конъюнкция целевых утверждений