如果我有以下规则:
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然后停止,因为如果只有一个条件为真,则整个条件为真?
答案 0 :(得分:1)
这是因为Prolog将尝试找到所有可能的解决方案,并将遵循所有可能的路径来执行此操作。你给出了两条可能的真实路径,所以它会跟随它们并向你展示两种结果。