1

human(Who).当我对以下.pl文件运行查询时

human(ann).
human(george).
human(mike).

我只回来Who = ann .

代替

Who = ann ;
Who = george ;
Who = mike.

我正在使用序言 6.6.6。如何让它显示完整列表?

4

2 回答 2

2

你得到的答案如下。你注意到点之前的空格了吗?

Who = ann .
         ^ SPACE!!!

该空格表示:查询已中止。也许你输入了return。或者,也许您有一个配置不正确的终端。

为了更好地检查这一点,请尝试:

?- X = 1 ; X = 2 ; X = 3.

在那里你也应该得到所有三个答案。如果不是,那肯定是你的终端

于 2016-03-20T13:19:42.347 回答
0

您看到的是 prolog 的默认行为。

查询

 ?-  findall(Object,Goal,List).

应该为你工作。

例如。

findall(X, human(X), L).

它将用所有可能的答案填充列表。

于 2016-03-20T06:11:37.120 回答