В соответствии с теорией предикатов первого порядка единственная структура данных в логических программах - термы. Определение термов индуктивно. Константы и переменные являются термами. Кроме того, термами являются составные термы, или структуры. Составной терм содержит функтор (называемый главным функтором терма) и последовательность из одного или более аргументов, являющихся термами. Функтор
задается своим функциональным именем, которое суть атом, и своей арностью
(местностью), или числом аргументов. Синтаксически составные термы имеют вид f(t1,t2,...,tn), где f - имя n-арного функтора, а ti - аргументы. Геометрически мы можем рассматривать термы как деревья, где для составного терма корнем является главный функтор терма, а поддеревьями - его аргументы.
Поскольку предикаты синтаксически выглядят так же, как составные термы (роль функтора играет предикатный символ), то, следовательно, программы и данные в Прологе имеют одинаковую форму (как в Лиспе).
В Пролог-программах допускается использование одного и того же предикатного (или функционального символа) с разным числом аргументов. Это возможно, поскольку каждый функтор определяется двумя параметрами: именем и арностью.
Некоторые функциональные символы являются встроенными: например, знаки арифметических операций. Поэтому арифметические выражения, рассмотренные ранее, являются примером составных термов (структур), записанных в инфиксной форме. Но их можно записывать и в префиксной форме.
Примеры:
?- X is *(+(5,4),+(5,8)).
X = 117
Yes
?- X = *(+(5,4),+(5,8)).
X = (5 + 4) * (5 + 8)
Yes
Структуры используются в Прологе для конструирования сложных типов данных. Например, для представления даты естественно использовать терм вида ‘дата’(1,’май’,1998).
Проверка типа терма
Для проверки типа терма используются встроенные предикаты.
var(+Term) - свободная переменная
nonvar(+Term) - несвободная (конкретизированная) переменная
integer(+Term) - целое число
float(+Term) - вещественное число