为什么它不会停止?

时间:2017-02-28 18:21:17

标签: prolog

如果我有以下规则:

test(X, Y, abc) :- X=='true' ; Y =='true'.

我做了一个查询,例如:test(true, true, X).

为什么会两次输出X = abc ?

| ?- test(true, true, X).
X = abc ? n
X = abc ? n
no

不应该回答'只有一次?

不应该发现X == true然后停止,因为如果只有一个条件为真,则整个条件为真?

1 个答案:

答案 0 :(得分:1)

这是因为Prolog将尝试找到所有可能的解决方案,并将遵循所有可能的路径来执行此操作。你给出了两条可能的真实路径,所以它会跟随它们并向你展示两种结果。