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

Раздел доменов (domains).

Раздел domains содержит объявление доменов. При этом используются

четыре характерных формата:

name = d /* стандартный домен */

mylist = elementDom* /* списковый домен */

my CompDom = f1(d11,d12,...,d1n); /* домен составных */

f2(d21,d22,...,d2n); /* объектов */

...

...

file = name1; name2; ...; nameN /* файловый домен */

Стандартные домены.

name = d

Такое описание объявляет домен name, состоящий из элементов стандар-

тного типа домена d; тип домена d должен быть integer, char, real, ref,

string или symbol.

Это объявление используется для синтаксически похожих объектов, но

различающихся семантически. Например, NoOfApples и HeightdnFeet могут

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

избежать этого, объявив два различных домена типа integer:

apples, height = integer

Объявление таким образом различных доменов позволяет Турбо Прологу

контролировать домены, чтобы избежать случайного их смешивания, например,

apples и height. Однако, оба домена могут быть взаимозаменяемо смешаны с

целыми числами, и вы можете использовать знак равенства для преобразова-

ния между apples и height.

Списковые домены.

mylist = elementDom*

Это удобная форма записи для объявления спискового домена. mylist

является доменом, состоящим из списков элементов из домена elementDom.

Домен elementDom может быть как доменом, определенным пользователем, так

и доменом одного из стандартных типов. Звездочка означает "список". Нап-

ример, следующее объявление домена

numberlist = integer*

объявляет домен для списков целых чисел, таких как [1, -5, 2, -6].

Домены составных объектов.

myCompDom=f1(d11,d12,...,d1n);f2(d21,d22,...);...

Чтобы объявить домен, который состоит из составных объектов, вы ука-

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

Например, вы можете объявить домен owners, составленный из следующих

элементов:

owns(john, book (wuthering_heights, bronte))

а также объявляем:

owners = owns(symbol, book)

book = book (symbol, symbol)

где owns является функтором составного объекта, а symbol и book являются

доменами подкомпонентов.

Правая часть этого типа объявлений доменов может определять различ-

ные альтернативы, разделенные точкой с запятой (;) или ключевым словом

or. Каждая альтернатива должна содержать единственный функтор и описание

доменов для подкомпонент функтора. Например, следующее объявление домена

может быть использовано, чтобы сказать: "Для некоторых предикатов значе-

нием key может быть up, down, left, right или символьная величина".

key = up; down; left; right; char (char)

Файловый домен.

file = name1;name2;nameN

Домен file должен быть определен, когда вам необходимо ссылаться на

файлы (определенные ранее) по символическим именам. Программа может иметь

только один домен такого типа, который должен быть назван file. Символи-

ческие имена файлов задаются как альтернативы для домена file. Например,

объявление

file = sales; salaries

представляет два символических имени файлов: sales и salaries.

Следующие альтернативы предопределены в домене file:

keyboard stdin

sereen stdout

printer stderr

coml

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