1

有没有办法使用findall接收另一个函数作为参数的函数?

我的问题是

enemy_area(Enemys,[X|Tail],Area) :-
   findall(A,(member(A,Enemys),adjacc(X,A)),Area).

(然后应该出现某种类型的递归)

其中adjacc函数应该从列表中返回一个点的所有相邻位置(这个列表中有几个点,我想要这些点的所有相邻点的并集)。

有办法吗?谢谢!

4

1 回答 1

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]

再见

于 2013-03-31T16:49:16.430 回答