
I
Однако списки с произвольным уровнем вложенности в Турбо-Прологе
s
недопустимы. Вместе с тем можно определить
одноуровневой
список из элементов
любого типа, например, список из одноуровневых списков
DOMAINS
list=integer*
listl=list*
PREDICATES
p(listl).
Теперь можно определить следующее утверждение для определенного выше
предиката р: р([[1,2], [3],
[4,5]]).
Но утверждение р([[1,2], 3,
[4]])
уже некорректно, т.к в
нем имеется элемент, не являющийся списком. Аналогично, некорректным является
факт
р([[1,2],[[3]],[4]])
из-за второго элемента, который представляет собой список
вложенности два.
7.3.2 Работа со списками произвольной структуры
Хотя в Турбо-Прологе отсутствует возможность введения списков произвольной
структуры, в комплект поставки Турбо-Пролога входит интерпретатор Pie-Prolog, в
достаточной степени приближенный к стандарту Пролога. В частности, в нем нет
никаких ограничений на списки. Интерпретатор Pie-Prolog написан на Турбо-Прологе
и запускается выполнением файла pie.pro. Интерпретатор имеет встроенный
редактор,
вызываемый командой edit, который в свою очередь позволяет загружать в него
внешние файлы (F3) и сохранять их
(F2).
7.4 КОНТРОЛЬНЫЕ ВОПРОСЫ
1 Какие операторы сравнения на равенство существуют в стандартном Прологе?
2 Какие другие операторы сравнения предусмотрены в языке Пролог?
3 Каковы особенности арифметических операторов в стандартном
Прологе
7
4. Как работает предикат
NOT?
5.
Что такое
дизъюнкция?
Как записывается оператор дизъюнкции на Прологе?
6 Как работает предикат
отсечения?
7 Почему не рекомендуется частое использование предиката отсечения?
8. Какие предикаты определения типов вы знаете?
9 Как записываются списки на Прологе?
10. Какова особенность записи списков на Турбо-Прологе по сравнению со
стандартным Прологом?
121