Источник Пролога - это просто список правил. Некоторые правила являются просто «данными» - они true
без дальнейшей оценки.
person(james).
father(james, thomas).
"Джеймс - это человек".
«Джеймс - отец Томаса».
Эти правила являются данными.
Я могу выполнить запрос к этим данным. Я могу спросить:
?- person(X).
Ответ будет:
X = james.
Или:
?- father(X, thomas).
Ответ будет таким же.
Другие правила требуют дальнейшей оценки.
grandfather(X, Z) :- father(X, Y), father(Y, Z).
Это простая "программа".
Наша дедушка программа оценит как истинное, если у нас будут правильные данные. Например:
father(james, william).
father(james, tyler).
father(james, thomas).
father(jeff, james).
Если я выполню следующую программу:
?- grandfather(jeff, X).
Я получаю:
X = william
Я могу попросить пролога продолжить, и я получу X = tyler
и X = thomas
.
Синтаксис становится более сложным, но основы те же. Данные и программа - это просто набор фактов. Искусство пролога - создавать правильные правила, которые приводят вычисления к результату.