【发布时间】:2018-04-14 18:07:20
【问题描述】:
我刚刚学习 PROLOG,我很难理解为什么我正在执行的查询会以“是/否”结尾。这是我的知识库:
male(albert).
male(bob).
male(bill).
male(carl).
male(charlie).
male(dan).
male(edward).
female(alice).
female(betsy).
female(diana).
parent(albert, bob).
parent(albert, betsy).
parent(albert, bill).
parent(alice, bob).
parent(alice, betsy).
parent(alice, bill).
parent(bob, carl).
parent(bob, Charlie).
然后我执行以下查询:
?-female(X).
返回:
X = alice ? ;
X = betsy ? ;
X = diana
yes
当我查询时:
?-parent(X, bob).
我回来了:
X = albert ?;
X = alice ?;
no
为什么一个结果是“是”,另一个结果是“否”?
【问题讨论】:
-
在 Prolog 中,您有 谓词,它们不是 函数。这意味着当您调用一个时,它是一个 查询,它将成功(可能多次使用多个解决方案)或失败(没有解决方案)。在这种情况下,“是”表示成功,“否”表示失败。当 Prolog 在解决方案后提示
?时,这意味着它有更多的选项可供探索,这可能会成功也可能不会成功。如果您按;,Prolog 会尝试该选项,如果无法找到其他解决方案,则说“不”。如果您没有收到?提示,则意味着没有选择点,Prolog 只会响应“是”。