最近我尝试了《在 Prolog 中构建专家系统》一书,该书可在http://www.amzi.com/ExpertSystemsInProlog免费获得。
附录中有一个名为 native shell 的代码以及一个鸟类识别数据库。问题是在咨询了shell并运行之后:
主要的。
加载。
解决。
它询问“鼻孔: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).
有人可以请帮助我吗?非常感谢任何帮助。
shell的完整代码:http: //www.amzi.com/ExpertSystemsInProlog/code/native/native.pro
数据库的完整代码:http: //www.amzi.com/ExpertSystemsInProlog/code/native/birds.nkb
我正在使用 swi prolog。