Рис.3.1. Классификация объектов данных
Атомы, переменные и числа в Прологе относятся к простым объектам.
Для представления объектов, имеющих несколько компонент (арность которых >0) используются структурированные объекты, которые представляются в виде деревьев.
Тип объекта распознается по его синтаксической форме.
АТОМ может быть символом (symbol) или строкой(string).
Символы:
1) цепочка букв, цифр и символа подчеркивания, начинающаяся со строчной буквы
(например,nil | x23 | x_y | ann)
2) специальные символы, кроме тех специальных символов, которые имеют в Прологе заранее определенный смысл(например,:-если - то)
::=, <--->,... и т.д.
3) цепочки символов, заключенные в одинарные кавычки
‘Tom’ ‘Ann’ ‘X’.
Строка:
Выделяется двойными кавычками и может содержать любую комбинацию литер:
“New York”, ”We study Prolog”.
Так как symbol/string взаимозаменяемы, то их отличия несущественны.
ЧИСЛО - как обычно
ПЕРЕМЕННАЯ- цепочка, состоящая из букв, цифр, символов подчеркивания. Начинается с прописной буквы или символа подчеркивания
X Result List_student _x23
Лексической областью определения переменных является одно предложение, поэтому под переменными с одним и тем же именем в двух предложениях подразумеваются две различные переменные.
Если переменная используется в предложении только один раз, то для нее не обязательно использовать имя. В этом случае используют так называемую анонимную переменную, которая записывается как один символ подчеркивания. Каждый символ подчеркивания представляет новую анонимную переменную.
Если анонимная переменная появляется в цели, то ее значение не выводится при выдаче результата.
СТРУКТУРА -это объект, который состоит из несколькиx компонентов. Эти компоненты тоже могут быть структурами. Все структурированные объекты могут быть изображены в виде деревьев. Корнем дерева является функтор.
student(fio(“orlov”,”dmitriy”),address(“pskov”,”mira”,53))
Составной объект student имеет две части: объект fio(“orlov”,”dvitriy”) и объект address(“pskov”,”mira”,53). Функторы у этих объектов – fio и address.
С точки зрения синтаксиса все объекты данных представляют собой термы.