【发布时间】:2018-10-30 21:09:53
【问题描述】:
扩展this 问题,为 SWI-Prolog 生成多种解决方案需要哪些按键?
测试代码:
test(10).
test(1).
尝试的交互:
?-test(X). // <- entered query
*按enter 会产生以下结果:
?-test(X).
X = 10.
?- // <- typing prompt here, pressing ";" here enters semi-colon character in new line.
根据手册:
如果需要其他解决方案,用户可以键入分号 (;) 或空格键。如果您不想看到更多答案,请使用返回键。如果用户使用返回键或 Prolog 知道没有更多答案,Prolog 会以句点 (.) 完成输出。如果 Prolog 找不到(更多)答案,它会写为 false。
什么时候应该按下这些键(分号/空格),以便程序给出多个解决方案而不是开始一个新的查询?
【问题讨论】:
-
我认为您的事实与加载的内容不匹配,因为如果您的商店中确实有这两个事实,Prolog 会停在
X = 10并等待您输入句点或分号.因为它没有,它认为没有进一步的解决方案。试试member(X, [1,2,3]).看看我在说什么。 -
您是否重新加载文件,该文件是否包含其他内容?是否有任何编译器警告/错误?
-
我不明白你在这里试图建议什么,应该总是有一种方法至少尝试获得多个解决方案,即使只有一个解决方案.这样做只会导致解决方案“错误”。
-
@user289661 实际上,如果堆栈上没有选择点,SWI Prolog 和许多其他人不会为您提供更多解决方案,因此在这种情况下您不能要求更多解决方案。
标签: prolog