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

Not getting full result when output is on one line

我是 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 个边,其余的没有显示。

如何解决这个问题?

graph(Graph),writeln(Graph).

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

来自@WillemVanOnsem

如果你写graph(G);true.那么程序会在第一条语句之后暂停。接下来你可以点击 W 它会再次写下答案,但现在是完整的。