为什么SWI-Prolog只会给出第一个答案?

12

我是Prolog的新手。 我正在尝试简单的示例来学习。 我有一个具有以下行的 .pl 文件:

parent(pam,bob).
parent(tom,bob).
parent(tom,lio).
parent(bob,ann).
parent(bob,pat).
parent(pat,jim).

经过咨询和测试,它只显示第一个答案。例如:

5 ?- parent(X,Y).
X = pam,
Y = bob .

它不应该给出满足关系parent的所有组合吗?

有人知道问题出在哪里吗?


4
在第一次显示结果后,请勿按回车键,改用空格键。 - Sam Segers
完美。感谢帮助。 - Sahar Alsadah
2
我已将此添加为答案,因为我感觉你不是唯一遇到这个问题的人。 - Sam Segers
1个回答

16

第一次显示结果后,不要按回车键,请改为使用空格键。

  • [Enter] 即使没有完成回溯,也会停止执行。
  • [Spacebar] 或者 [;] 从上一次结果继续回溯到下一个结果或 false(如果没有其他结果)。

1
你能解释一下空格和回车键对于未来的读者有什么区别吗? - Chris Haas
我以为那已经很清楚了,但如果不是的话,我希望这样做可以。谢谢。 - Sam Segers
谢谢回答。但是当没有答案时它不会显示“false”。对于每个“;”显示每个结果,然后进入“?-”。我正在尝试使用SWI-Prolog 8.2.4。 - Hareen Laks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接