2012-10-27 8 views
2

다른 기능을 매개 변수로 사용하는 findall 기능을 사용하는 방법이 있습니까?find_all 수신 기능을 사용하는 방법은 무엇입니까?

내 문제는

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

같은 뭔가 adjacc 함수는 목록에서 포인트의 모든 인접한 위치를 반환해야합니다

하는 (다음과 재귀의 몇 가지 유형을 제공한다) (이 몇 가지있다 이 목록에있는 점들, 그리고 나는이 점들의 모든 인접 점들의 합집합을 원합니다).

방법이 있습니까? 고맙습니다!

답변

0

유니온을 원할 경우 findall/3 다음에/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] 

안녕

을 여기

가 부여 됨으로써입니다
관련 문제