最近、 http: //www.amzi.com/ExpertSystemsInPrologから無料で入手できる「BuildingExpertSystemsinProlog」という本を試しました。
付録には、鳥の識別データベースとともにネイティブシェルと呼ばれるコードがあります。問題は、シェルと相談して実行した後、次のことです。
主要。
ロード。
解決する。
「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
データベースの完全なコード:http://www.amzi.com/ExpertSystemsInProlog/code/native/birds.nkb
私はswiプロローグを使用しています。