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

Многоуровневые составные объекты.

Турбо Пролог позволяет конструировать составные объекты на несколь-

ких уровнях. Например, в:

книга("Гадкий утенок","Андерсен")

вместо использования фамилии автора вы можете использовать новую структу-

ру, которая описывает автора более детально, включая имя и фамилию. Вызы-

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

на:

книга("Гадкий утенок",автор("Ганс Христиан","Андерсен"))

в старом определении домена:

книга(название,автор)

второй аргумент книги является функтором "автор". Но старое определение

автор=symbol

может включать только одно имя, но это уже не имеет значения. Вы можете

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

милии автора. Вы описываете его как:

автор=автор(имя,фамилия)

что приводит к следующим определениям:

domains

articles = book(title,author); ... /* Первый уровень */

author = author(first_name,last_name) /* Второй уровень */

title,first_name,last_name = symbol /* Третий уровень */

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

такое "дерево":

книга

/ \

название автор

/ \

/ \

имя фамилия

Описание домена описывает только один уровень дерева, а не целое де-

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

книга = книга(название,автор(имя,фамилия))