Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Аргументы предикатов

Аргументы предикатов должны принадлежать доменам, известным Турбо

Прологу. Эти домены могут либо быть стандартными доменами, либо - некото-

рыми из тех, что вы объявили в секции доменов.

Примеры

-------

1. Если в секции predicates вы объявляете следующим образом предикат

my_predicate (symbol, integer):

predicates

my_predicates (symbol, integer)

то вам не нужно в секции domains декларировать домены его аргументов,

т.к. "symbol" и "integer" - стандартные домены. Однако, если этот же пре-

дикат вы объявляете следующим образом:

predicates

my_predicates (name, number)

то вам необходимо объявить, что name (символический тип) и number (целый

тип) принадлежат к стандартным доменам symbol и integer, т.е.:

domains

name=symbol

number=integer

predicates

my_predicates (name, number)

2. Следующий фрагмент программы показывает несколько различных объ-

явлений доменов и предикатов:

domains

person,activity=symbol

car,make,color=symbol

meleage,years_on_road,cost=integer

predicates

likes (person,activity)

parent (person,person)

can_buy (person,car)

car (make,mileage,years_on_road,color,cost)

green (symbol)

ranking (symbol,integer)

Этот фрагмент сообщает следующую информацию о предикатах и их аргу-

ментах:

# Предикат likes имеет два аргумента (person и activity), причем они

оба принадлежат домену symbol (что означает, что их значениями явля-

ются идентификатоы, а не числа).

# Предикат parent имеет два аргумента (person), причем каждый из

person относится к отдельному домену symbol.

# Предикат can_buy имеет два аргумента (person и car), которые отно-

сятся к типу symbol.

# Предикат car имеет 5 аргументов: make и color относятся к различ-

ным доменам symbol, а mileage,years_on_road и cost - к различным до-

менам integer.

# Предикат green имеет один аргумент типа symbol: нет необходимости

декларировать этот тип аргумента, т.к. он относится к стандартному

домену symbol.

# Предикат ranking имеет два аргумента, каждый из которых принадле-

жит к стандартному домену (symbol и integer), поэтому декларировать

типы этих аргументов не требуется.

В главе 6 "Простые и составные объекты" более подробно объясняется

декларация доменов.

Секция доменов

Домены в Прологе сходны с типами в Паскале. Они позволяют вам зада-

вать различные имена различным видам данных, которые, в противном случае,

будут выглядеть абсолютно одинаково. В Турбо Пролог'овских программах об-

ъекты в связях (аргументы предикатов) принадлежат доменам, причем это мо-

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

Секция domains служит двум очень полезным вещам. Во-первых, вы може-

те задать доменам осмысленные имена, даже если внутренне эти домены ана-

логичны уже имеющимся. Во-вторых, объявление специальных доменов исполь-

зуется для описания структур данных, не имеющихся в стандартных доменах.

Иногда очень полезно описать новый домен - особенно, когда вы хотите

прояснить отдельные разделы секции predicates. Объявление собственных до-

менов (благодаря присваиванию осмысленных имен типам аргументов) помогает

документировать описываемые вами предикаты.

Соседние файлы в папке Документация