3
왜 내 술어가 역 추적하지 않고 모든 솔루션을 찾지 못하는지 이해할 수 없습니다.내 술어가 왜 역 추적하지 않습니까?
person(john).
person(erik).
allExceptSpider(person(Spider),T):-
setof(person(X),person(X),S),
subtract(S,[person(Spider) ],T).
내가 두 변수이 술어 호출하는 경우 : 다음
allExceptSpider(person(Z),Q)
에게 그것은 단지 나에게 응답 Z = 존을 줄 것이다, Q는 = [사람 (에릭)] 하지만 철수하지 않을 것이다 찾으려면 Z = erik, Q = [사람 (존)] 왜?
때문에 빼기/3 서명의 : +, +, -. 두 번째 인수는 반드시 그라운드되어야합니다. – CapelliC
@ CapelliC. 모드 사양이 엉성함. cf https://sicstus.sics.se/sicstus/docs/latest4/html/sicstus.html/Mode-Spec.html. IIRC "++"는 "처리해야 함"을 나타내는 일부 프로세서에서 사용됩니다. – repeat