在prolog中根据事实创建列表
我想根据以下事实创建一个列表:在prolog中根据事实创建列表,prolog,Prolog,我想根据以下事实创建一个列表: table(mickel). table(harris). table(wolfgang). table(yanis). table(antti). table(peter). table(jeroen). table(johan). table(luis). table(eric). 但我不想使用内置规则或谓词, 除非我自己定义它们。 结果几乎是这样的: ?- seats(Seats). Seats = [yanis,antti,peter,jeroen,jo
table(mickel).
table(harris).
table(wolfgang).
table(yanis).
table(antti).
table(peter).
table(jeroen).
table(johan).
table(luis).
table(eric).
但我不想使用内置规则或谓词,
除非我自己定义它们。
结果几乎是这样的:
?- seats(Seats).
Seats = [yanis,antti,peter,jeroen,johan,luis,eric,michel,
harris,wolfgang]
我不知道该怎么办,请帮助。您必须创建自己的findall谓词,这可能会有帮助:
seats(L) :- find([], L), !.
find(Acc, Loa) :- table(Y), uList(Y, Acc, AccNew), find(AccNew, Loa).
find(Acc, Acc).
uList(X, [], [X]) :- !.
uList(H, [H|_], _) :- !, fail.
uList(X, [H|T], [H|Rtn]) :- uList(X, T, Rtn).
咨询:
?- seats(L).
L = [mickel, harris, wolfgang, yanis, antti, peter, jeroen, johan, luis|...].
我认为您应该从一个Prolog教程开始,并特别注意列表处理示例(网上有)。然后尝试解决你的问题,展示你尝试了什么以及你在哪里遇到了困难。你说,“我不想使用内置规则或谓词,除非我自己定义它们”。你的意思是你想实现你自己的Prolog吗?