2010-04-06 3 views

답변

1

증명 정보를 추적하여 일반 "바닐라"메타 인터프리터를 시도하고 확장 할 수 있습니다. ... 은 아마, 당신이 내장 된 절을 사용하는 것이 좋습니다

 
solve([]). 
solve([A|T]) :- solve_atom(A), solve(T). 

solve_atom(A) :- my_clause(A,B), solve(B). 

my_clause(doubleapp(X,Y,Z,R),[app(X,Y,I),app(I,Z,R)]). 
my_clause(app([],L,L),[]). 

당신은 해결 단계를 추적 할 인터프리터에 추가 인수를 추가 할 수 있습니다 다음과 같이 는 기본적으로 일반 바닐라 통역 보인다/2가 아닌 my_clause (추적 할 프로그램을 수동으로 삽입 할 필요가 없도록)입니다.

저는 실제로 강의를 위해 SICStus Prolog 용 (초안) 솔루션을 작성했습니다. 명령 줄에서 실행할 수 있습니다. SWI에 적응하기 쉽습니다. SLD- 트리 또는 And-Or-Tree의 도트 표현을 생성 할 수 있습니다. 요청시 소스 코드를 보낼 수 있습니다.

하지만 아마도 SWI에 내장 된 쉬운 솔루션이 있을지 모르겠습니다.

관련 문제