프롤로그의 정렬 된 목록에서 요소를 제거하는 술어를 작성하려고합니다. 이것은 숙제의 일부이며 Prolog의 의미 체계가 일반적으로 어떻게 작동하는지 혼란 스럽습니다.프롤로그에서 목록을 올바르게 작성하십시오.
목표가 rdup([1,2], L).
인 다음 함수를 사용하면 false
이됩니다. 나는 목표를 추적했으며, 필자가 재귀 호출을 사용하여 결과 목록을 구축하는 방식으로 구축하지 않아야하는 것처럼 보입니다. 결과 목록을 어떻게 작성해야하는지 확신 할 수 없습니다. 여기에 함수는 다음과 같습니다
rdup([],M).
rdup([X],[X]).
rdup([H1,H2|T], M) :- H1 \= H2, rdup(T, [M,H1,H2]).
rdup([H1,_|T], M) :- rdup(T, [M,H1]).
사람이 말해 줄래?
'(\ =)/2' 대신에'dif/2'를 쓰면'? - rdup ([X, Y, Z)]와 같은 앤서 쿼리 ], Ls) .' – mat