Листинг 3.2. Использование альтернативных доменов

domains

row,column,step=integer

movement=up(step);

down(step);

left(step);

right(step)

predicates

move_cursor(row,column,movement)

clauses

move_cursor(R,C,up(Step)):-

cursor(R,C),

R1=R-Step,

cursor(R1,C),

write("movement_up\n").

move_cursor(R,C,down(Step)):-

cursor(R,C),

R1=R+Step,

cursor(R1,C),

write("movement_down\n").

move_cursor(R,C,left(Step)):-

cursor(R,C),

C1=C-Step,

cursor(R,C1),

write("movement_feft\n").

move_cursor(R,C,right(Step)):-

cursor(R,C),

C1=C+Step,

cursor(R,C1),

write("movement_right\n").

Альтернативный домен позволяет использовать предикат movevent применительно к различным классам движения курсора. Термы up, down, left, right являются именами структур. Однако,при появлении в предикатном выражении одновременно играют рольимен функторов, то есть Пролог не делает различий между функторами структур и доменными структурами. Если бы конструкция домена movement отсутствовала, то пришлось бы ввести 4 предиката.

Здесь использован стандартный предикат

cursor(Row,Column) (integer,integer) (вх, вх),(вых, вых):

- помещает курсор в позицию с координатами (Row,Column) (вх, вх);

- присваивает переменной Row и Column значения текущих координат курсора(вых, вых).

Выводы:

- Типы объектов данных могут быть простыми и составными. Простой объект – это константа или переменная.

- Составной объект данных позволяет рассматривать несколько частей информации как единое целое. В этом случае функтор используется для различения объектов. Функтор – это имя, а не функция. Функтор определяет вид составных объектов данных и объединяет вместе их аргументы.

- Домен можно определить как несколько альтернативных функторов (альтернативный домен).

- использование составных объектов позволяет упростить написание предикатов.

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

Рассмотрение работы с составными объектами и альтернативными доменами закончено. Посмотрим, как именно строится логический вывод, реализованный на ЭВМ?

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


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



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