Помимо встроенных предикатов, описанных нами, в Прологе-10 предусмотрено много других возможностей.
«Условная» форма задания целей, которая позволяет задавать цели в следующем виде:
…, (likes(john,X) --› wooden(X); plastic(X)),…
Идея такой составной цели состоит в следующем. Если цель - «условие», которая задается перед стрелкой --›, согласуется с базой данных, то осуществляется вызов второй цели, заданной непосредственно после --›, иначе осуществляется вызов третьей цели. Любая из этих целей может представлять собой последовательность целей Пролога. Указанные условные цели действуют точно так же, как если бы они были определены в Прологе-10 следующим образом:
?- op(1050,xfy,-›).
?- op(1100,xfy,';').
(X -› Y; Z):- call(X),!, call(Y).
(X -› Y; Z):- call(Z).
Индексированная база данных. Это средство позволяет сопоставлять элементы информации в базе данных с конкретными значениями и обходить стандартный механизм доступа к базе данных, имеющийся в Прологе. Например, если бы вы захотели хранить информацию о возрастах сотен людей, то стандартный подход потребовал бы завести сотни утверждений для некоторого предиката age (возраст). И когда затем вы бы пожелали выяснить возраст конкретного человека, Пролог должен был бы осуществить просмотр всех утверждений, пока не нашел бы нужный. Беда в том, что при обычном подходе информация сопоставляется с предикатом и, когда предикат содержит много утверждений, объем поиска может быть большим. Индексированная база данных позволяет сопоставлять информацию с конкретным именем более прямым способом.
Возможность доступа к предшественникам. В главе о средствах отладки мы рассматривали понятие целей-предшественников. В Прологе-10 предусмотрены встроенные предикаты, обеспечивающие доступ к предшественникам из Пролог-программы.
Статистическая информация. В Прологе-10 предусмотрены встроенные предикаты, позволяющие получить данные о скорости выполнения вашей программы и объеме памяти, необходимой для ее выполнения. |