在Prolog中考虑以下示例程序:
p(0).
p(1).
b1(T) :-
T = tri(X, Y, Z), p(X), p(Y), c(T), !, p(Z).
c(tri(X, X, _Z)).
SWI Prolog为某些查询提供了一些有趣的答案:\
?- b1(tri(0, Y, Z)).
Y = Z, Z = 0 ;
Y = 0,
Z = 1.
请注意,它确实在第二个答案中打断了行,但在第一个答案中没有。
这让我想知道,换行的确切规则是什么? SWI Prolog何时打破界限,何时不打破界限?这取决于什么?
答案 0 :(得分:2)
所有绑定(变量=值)都显示在自己的行上,除非两个或多个变量绑定到相同的值。在这种情况下,它会在一行上使用以下语法。
{{1}}
这样做是因为知道两个变量具有相同的值很有价值。 SWI-Prolog中的答案被打印为有效的Prolog程序。没有进一步的承诺,版本,顺序等可能会在版本之间更改,恕不另行通知。如果要让计算机读取结果,请不要使用顶层。