输出在一行时没有得到完整的结果

时间:2017-03-09 16:35:40

标签: prolog swi-prolog prolog-toplevel

我是Prolog的新人,我正在尝试对图表进行一些操作。

我的实现存在问题,因为曝光非常漫长而且很复杂,我会给出一个简单而类似的问题。

假设我们有以下图表:

edge(a,e).
edge(e,d).
edge(d,c).
edge(c,b).
edge(b,a).
edge(d,a).
edge(e,c).
edge(f,b).

我想让这张图表双向投标。我使用以下代码:

graph(Graph):-findall(A-B, edge(A,B), L),
    findall(B-A, edge(A,B), L1),
    append(L, L1, Graph).

执行查询时,我得到了这个结果:

?- graph(Graph).
Graph = [a-e, b-a, c-b, d-a, d-c, e-c, e-d, f-b, ... - ...|...].

我的问题不在于代码中我的问题在于结果,因为你可以看到我没有得到完整的结果,它总是只给我8个边缘,其余的没有显示。

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

graph(Graph),writeln(Graph).

writeln/1将整个变量写出到输出。

来自@WillemVanOnsem

如果你写graph(G);true.,程序将在第一个语句后暂停。接下来你可以点击 W 然后它会再次写出答案,但现在已经完整了。