Prolog 当输出在一行上时未获得完整结果

Prolog 当输出在一行上时未获得完整结果,prolog,swi-prolog,prolog-toplevel,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), L

我是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


如果你写
图(G);正确。
然后程序将在第一条语句后暂停。接下来你可以点击W,它会再次写出答案,但现在是完整的。

如果你点击W,它会写出完整的列表。@WillemVanOnsem不在SWI Prolog中,据我所知。@JimAshworth:如果你写
graph(G);正确。
然后程序将在第一条语句后暂停。下一步你可以点击W,它会再次写出答案,但现在是完整的。@WillemVanOnsem啊,所以只有在查询仍然处于“活动”状态时才有用-很高兴知道,谢谢。请参见“?-graph(graph),writeln(graph)。”
[a-e,b-a,c-b,d-a,d-c,e-c,e-c,e,e-b,a]
graph=[a-e,b-a,c-b,d-a,d-c,e-c,e-d,f-b,…-…..。谢谢你的回答是的问题解决了…我只是想问一下,有没有办法从prolog中获取或将结果转换成图形表示(获取节点和连接边)?@StambouliA.ouadoud这将是一个新问题,但我认为有?问一个新问题,别人就会知道。