2012-12-18 14 views
1

서브 세트 기능을 작성 중이며 그렇게하고 있습니다. 물론 멤버 함수를 사용하여이 기능을 쓸 수있는 더 나은 방법이,프롤로그의 서브셋 기능

member(X, [ X | T ]). 
member(X, [ _ | T ]) :- member(X, T). 

subset([], _). 
subset([H|T1], T2) :- 
    member(H, T2), 
    subset(T1, T2). 
subset([H1|T1], [H2|T2]) :- 
    \+ member(H1, T2), 
    subset([H1|T1], T2). 

내 질문은 : 여기에 멤버 함수를 구현하는 내 기능입니다.

답변

2

subset/3의 세 번째 절은 이해가되지 않으며 제거해야한다고 생각합니다. H1T2의 구성원이 아닌 경우 재귀 호출 subset([H1|T1], T2)도 분명히 성공하지 못합니다.

그 외에도 처음 두 절이 나올 것 같습니다.

+0

잡기에 감사드립니다. – Stranger