我正在努力使用Prolog(特别是SWI Prolog)。
我有这个非常简单的列表:
animal(bear).
animal(mouse).
animal(bird).
现在,只要我要求所有原子实现(正确的表达式是什么?)谓词 动物我总是只得到第一个。
?- animal(X).
X = bear .
虽然所有三个原子都评估为动物的“真实”。
?- animal(mouse).
true.
?- animal(bird).
true.
我做错了什么?这种行为是否可以通过某种设置来控制?
答案 0 :(得分:0)
您的代码没有任何问题。 Prolog是一台推理机器。所以它试图找到满足所有变量的第一个解决方案。 一旦找到解决方案,就会将其打印出来。
现在,如果您需要其他解决方案,您应该输入一些组合,以便prolog继续搜索。 如果我没记错的话可能是分号......
希望这有帮助