PROLOG가 어떻게 결과를 쿼리에서 찾았는지 시각화하는 것이 합리적입니까? 경로를 통해 무엇을 발견했는지 이해하는 것이 도움이 될 것입니다. 일부 반복 항목 (예 : 패밀리 트리 쿼리에서 상대 항목을 두 번 찾음)PROLOG 해상도 탐색, 시각화?
이solve(T):-
(T = (A,B) -> solve(A) , solve(B)
; T = (A;B) -> (solve(A) ; solve(B))
; A).
우리는 각 단계에 copy_term/2
를 사용하고, 차이 목록에 복사 된 용어를 수집 할 수 있습니다
일반적으로 프롤로그 인터프리터에는 디버거가 있으므로 다음과 같이 시작하면됩니다. 자취. –
btw, 아무 것도 깨지 않고 하나 이상의 지점에서 찾기 때문에 반복되는 결과를 제거하는 좋은 방법이 있습니까? 이미 우아하거나 미리 정의 된 것이 없다면 결과 목록을 중복으로 필터링하는 자체 findall을 만들어야한다고 생각합니다. –
은'setof/3'과 (과) 비슷합니까? –