최근에 나는 http://www.amzi.com/ExpertSystemsInProlog에서 무료로 사용할 수있는 "프롤로그로 건물 전문가 시스템"이라는 책을 시도했습니다.네이티브 프롤로그 쉘
새 식별 데이터베이스와 함께 부록에 native shell이라는 코드가 있습니다. 문제는 셸로 문의하여 실행 후 :
main입니다.
로드.
해결.
"nostrils : external_tubular?"라고 묻습니다.
아니오로 대답하면 스택 오버플로가 발생합니다. 문제는 아마도 블로우 섹션에서 발생했을 것입니다.
prove(true,_) :- !.
prove((Goal,Rest),Hist) :-
prov(Goal,[Goal|Hist]),
prove(Rest,Hist).
prove(Goal,Hist) :-
prov(Goal,[Goal|Hist]).
prov(true,_) :- !.
prov(menuask(X,Y,Z),Hist) :- menuask(X,Y,Z,Hist), !.
prov(ask(X,Y),Hist) :- ask(X,Y,Hist), !.
prov(Goal,Hist) :-
clause(Goal,Body),
prove(Body,Hist).
제발 도와 주실 수 있습니까? 어떤 도움을 주셔서 감사합니다. 쉘의
전체 코드 : 데이터베이스에 대한 http://www.amzi.com/ExpertSystemsInProlog/code/native/native.pro
전체 코드 : 나는 SWI 프롤로그를 사용하고 http://www.amzi.com/ExpertSystemsInProlog/code/native/birds.nkb
.
는
! SWI-Prolog 인터프리터를 사용하여 프롤로그를 작성하십시오. 따라서 첫 번째 생각은 구문 불일치가 있다는 것입니다. 그러나보고하는 오류 (스택 오버플로)는 수정이 필요한 코드의 위치를 정확히 파악하는 데 도움이되지 않습니다. 아마도 [SWI-Prolog의 디버깅 기능] (http://www.swi-prolog.org/pldoc/man?predicate=trace/0)이 다음 단계가되어야합니다. [SWI-Prolog 그래픽 트레이서] (http://www.swi-prolog.org/gtrace.html)에는 XPCE 콘솔이 필요합니다. – hardmath
현재 Logtalk 배포판 (http://logtalk.org/)에는 Amzi 포트가 포함되어 있습니다! 조류 식별 전문가 시스템. 여기에서 소스 코드를 검색 할 수도 있습니다. http://trac.logtalk.org/browser/trunk/examples/birds 대부분의 Prolog 컴파일러 Logtalk 백엔드 컴파일러. –