有没有办法使用findall
函数接收另一个函数作为参数?
我的问题就像是
enemy_area(Enemys,[X|Tail],Area) :-
findall(A,(member(A,Enemys),adjacc(X,A)),Area).
(然后应该来某种类型的递归)
其中adjacc
函数应返回List中Points的所有相邻位置(此列表中有几个点,我想要这些点的所有邻接的并集)。
有办法吗?谢谢!
答案 0 :(得分:0)
如果你想要一个联盟,你可以在findall / 3之后尝试sort / 2。
这是一个例子:
adjacc(a,b).
adjacc(a,c).
adjacc(b,c).
adjacc(b,d).
现在,如果你尝试:
?- findall(Y, (member(X,[a,b]),adjacc(X,Y)), L), sort(L, S).
你应该得到:
L = [b,c,c,d],
S = [b,c,d]
再见