在具有以下规则的程序中: 邻居(X,Y): - 链接(X,Y);链接(Y,X)。
表格链接(a,b)等已经陈述了一些事实
如何编写一个程序all_neighbours(L,X),它将所有邻近城镇的列表L返回给X?
我的尝试:
all_neighbours([Y|Tail],X):- neighbour(X,Y), fail.
答案 0 :(得分:1)
您的尝试没有成功,因为您始终在第一个事实上失败,并且永远不会在数据库中找到剩余的事实。
最简单的方法是使用内置的findall/3
谓词:
all_neighbours(L, X) :- findall(Y, neighbour(X, Y), L).