Унификация составных объектов

Составной объект может быть унифицирован с простой переменной или с составным объектом (возможно, содержащим переменные в качестве частей во внутренней структуре), который ему соответствует. Это означает, что составной объект можно использовать для того, чтобы передавать целый набор значений как единый объект, и затем применять унификацию для их разделения. Например:

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

книга(название, автор, год_издания,колич_стр)

предпочтение(имя,фамилия, название)

запись_в_карточке(персона,выбранная_книга)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: