logo search
TurboProlog / Документация / TOM_1

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

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

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

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

Примеры

-------

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 "Простые и составные объекты" более подробно объясняется

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