Составной объект может быть унифицирован с простой переменной или с составным объектом (возможно, содержащим переменные в качестве частей во внутренней структуре), который ему соответствует. Это означает, что составной объект можно использовать для того, чтобы передавать целый набор значений как единый объект, и затем применять унификацию для их разделения. Например:
date("April",14,1960)
сопоставляется с х и присваивает х значение date ("April", 14, i960). Также
date("April",14, I960)
сопоставляется с date(Mo, Da, Yr) и присваивает переменным Mo = "April", Da = 14 И Yr = I960.
Visual Prolog осуществляет унификацию в двух случаях. Во-первых, когда цель сопоставляется с заголовком предложений. Во-вторых, через знак равенства (=), который является инфиксным предикатом (предикатом, который расположен между своими аргументами, а не перед ними).
Фактически, Visual Prolog выполняет операцию присваивания для унификации объектов по разные стороны знака равенства. Это свойство полезно для нахождения значений аргументов составного объекта
|
|
Составные объекты могут рассматриваться в предложениях Пролога как единые объекты,
Можно использовать первый компонент составного объекта — функтор для распознавания различных объектов.
Важная особенность составных объектов состоит в том, что они позволяют легко передавать группы величин, как один аргумент. Рассмотрим в качестве примера ведение телефонной базы данных.
Объявление составных доменов
После компиляции программы, которая содержит следующие отношения:
Domains
название,автор = symbol
год_издания,колич_стр = integer
персона=персона(имя_персоны,адрес_персоны)
имя_персоны=имя_персоны(имя,фамилия)
адрес_персоны=адрес_персоны(дом,улица,город)
выбранная_книга=выбранная_книга(состояние,название_книги)
дом=integer
состояние,название_книги,имя,фамилия,улица,город=symbol
Predicates
книга(название, автор, год_издания,колич_стр)
предпочтение(имя,фамилия, название)
запись_в_карточке(персона,выбранная_книга)