Альтернативные домены
Использование альтернативных доменов
Представление данных требует большого числа структур. В ТП
эти структуры должны быть описаны. Возникает трудность с преедикатами,
работающими с объектами этих доменов. Для устранения недостатков ТП предлагает
пользователю альтернативное описание доменов.
domains
предмет разные_вещи (вещь);
книга (автор,
название);
пластинка
(альюом, артист, тип);
имя, вещь,
автор, название, артист,
альбом, тип = symbol
predicates
имеет (имя, предмет)
clauses
имеет (тои, разные_вещи
(авто)).
имеет (джон, книга
(«Войнич», «Овод»).
имеет (билл, пастинка
(«Мадонна», Мадонна, эстрада)
Программа использует
3 структуры: разные вещи, книга и пластинка. Все они объединены под
одним именем, что позволило вывести очень простой предикат имеет (имя,
предмет).
использование альтернативных доменов позволяет писать в
утверждении предикат имеет применительно к разным классам. При отсутствии этой
конструкции требовалось бы написать 3 предиката.
Заметим, что термы разные_вещи, книга, пластинка являются
именами структур. Однако, когда они появляются в предикатных выражениях, то
одновременно играют и роль имен функторов. ТП не делает различия между
функторами и доменами структур. Это средство введено в ТП преднамеренно, так
как оно очень удобно именно в декларативных языках.
/* Пермещение курсора по экрану */
domains
movement = up (step);
down (step);
left (step);
right (step);
no
row, column, step = integer
predicates
move_cursor (row, column, movement)
clauses
move_cursor (R, C, up (step)):- cursor
(R,C), R1=R-step, cursor (R1, C).
move_cursor (R, C, down (step)):- cursor
(R,C), R1=R+step, cursor (R1, C).
move_cursor (R, C, left (step)):- cursor
(R,C), C1=C-step, cursor (R, C1).
move_cursor (R, C, right(step)):- cursor
(R,C), C1=C+step, cursor (R, C1).
move_cursor (R, C, no):- cursor (R,C).
Стандартный предикат cursor (строка, столбец) (integer, integer) : (i, i) (o, o)
(i, i) – перемещение курсора в
заданную позицию в текущем активном окне.
(o, o) – связь
параметров строка и столбец с текущей позицией курсора.
|
Календарь | « Май 2024 » | Пн | Вт | Ср | Чт | Пт | Сб | Вс | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|
Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|