Prolog源只是一个规则列表.有些规则只是"数据" - 它们true
没有进一步的评估.
person(james).
father(james, thomas).
Run Code Online (Sandbox Code Playgroud)
"詹姆斯是一个人." "詹姆斯是托马斯的父亲."
这些规则就是数据.
我可以针对这些数据运行查询.我可以问:
?- person(X).
Run Code Online (Sandbox Code Playgroud)
答案是:
X = james.
Run Code Online (Sandbox Code Playgroud)
要么:
?- father(X, thomas).
Run Code Online (Sandbox Code Playgroud)
答案是一样的.
其他规则需要进一步评估.
grandfather(X, Z) :- father(X, Y), father(Y, Z).
Run Code Online (Sandbox Code Playgroud)
这是一个简单的"程序".
如果我们有正确的数据,我们的祖父计划将评估为真.例如:
father(james, william).
father(james, tyler).
father(james, thomas).
father(jeff, james).
Run Code Online (Sandbox Code Playgroud)
如果我执行以下程序:
?- grandfather(jeff, X).
Run Code Online (Sandbox Code Playgroud)
我明白了:
X = william
Run Code Online (Sandbox Code Playgroud)
我可以要求prolog继续,我会得到X = tyler
和X = thomas
.
语法变得更复杂,但基础是相同的.数据和程序只是一组事实.prolog的艺术正在制定正确的规则,以推动计算结果.