我有3个事实。
myfact1(1,'Hamburg','Berlin', 315).
myfact2(2,'Kiel','Bremen', 175).
myfact3(3,'Essen', 'Oberhausen',50).
我想把myfacts的信息作为List的元组。我的查询
output(List)
应该列出如下列表:
[('Hamburg', 'Berlin', 315),('Kiel','Bremen',175),('Essen','Oberhausen',50)]
如何在Prolog中实施规则output/1
答案 0 :(得分:0)
我不知道我是否理解它,但我会将事实改为" myfact"而不是myfact1。在那种情况下:
output(List) :-
findall(myfact(A,B,C,D),myfact(A,B,C,D),List).
如果你真的想保留myfacts1,......:
output(List) :-
myfact1(A1,A2,A3,A4),
myfact2(B1,B2,B3,B4),
myfact3(C1,C2,C3,C4),
append([myfact1(A1,A2,A3,A4),myfact2(B1,B2,B3,B4),myfact3(C1,C2,C3,C4)],[],List).
当然有更好的解决方法。