【问题标题】:Why does SWI-Prolog only give me the first answer?为什么 SWI-Prolog 只给我第一个答案?
【发布时间】:2016-03-31 12:22:53
【问题描述】:

我是 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关系的所有组合吗?

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

【问题讨论】:

  • 第一个结果显示后不要按回车键,而是使用空格键
  • 完美。感谢您的帮助。
  • 我已将此添加为答案,因为我感觉您不是唯一遇到此问题的人。

标签: prolog prolog-toplevel


【解决方案1】:

在显示第一个结果后不要按 Enter,而是使用空格键

  • [Enter]即使回溯还没有完成也会停止执行
  • [Spacebar][;] 继续从上一个结果回溯到下一个结果,如果没有其他结果,则返回false

【讨论】:

  • 你能解释一下空格和输入之间的区别对未来的读者有什么影响吗?
  • 我认为这已经很清楚了,但如果没有,我希望这会做到。谢谢。
  • 感谢您的回答。但是当没有答案时,它不会说“假”。显示每个';'的每个结果然后转到?-。我正在尝试 SWI-Prolog 8.2.4。
猜你喜欢
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
相关资源
最近更新 更多