2

我正在尝试熟悉 Prolog(特别是 SWI Prolog)。

我有这个非常简单的清单:

animal(bear).
animal(mouse).
animal(bird).

现在,每当我要求所有满足谓词动物的原子(正确的表达方式是什么?)时,我总是只得到第一个。

?- animal(X).
X = bear .

尽管对于动物来说,所有三个原子都评估为“真”。

?- animal(mouse).
true.

?- animal(bird).
true.

我究竟做错了什么?这种行为是否可以通过某些设置来控制?

4

1 回答 1

0

您的代码没有任何问题。Prolog 是一个推理机。所以它试图找到满足所有变量的第一个解决方案。一旦找到解决方案,它就会打印出来。

现在,如果您需要其他解决方案,应该输入一些组合,以便 prolog 继续搜索。如果我没记错的话,它可能是一个分号...

希望这可以帮助

于 2012-12-06T14:41:26.530 回答