Récemment, j'ai essayé le livre "Building Expert Systems in Prolog" qui est disponible gratuitement au http://www.amzi.com/ExpertSystemsInProlog.Native Prolog Shell
Il existe un code appelé shell natif à l'annexe avec une base de données d'identification des oiseaux. Le problème est que, après consultation avec la coquille et en cours d'exécution:
principal.
charge.
résoudre.
Il demande "narines: externe_tubulaire?"
Si vous répondez non, un débordement de pile se produit. Le problème est probablement à la section coup:
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).
Quelqu'un peut s'il vous plaît aidez-moi s'il vous plaît? Toute aide est grandement appréciée.
code complet de la coquille: http://www.amzi.com/ExpertSystemsInProlog/code/native/native.pro
Code complet pour la base de données: http://www.amzi.com/ExpertSystemsInProlog/code/native/birds.nkb
J'utilise Prolog SWI.
Vous utilisez l'exemple de code écrit pour Amzi! Prolog avec l'interpréteur SWI-Prolog, donc ma première pensée est qu'il y a une incompatibilité de syntaxe. Cependant, l'erreur que vous signalez (débordement de pile) n'aide pas à déterminer où le code doit être corrigé. Peut-être [les installations de débogage dans SWI-Prolog] (http://www.swi-prolog.org/pldoc/man?predicate=trace/0) devraient être votre prochaine étape. Le [traceur graphique SWI-Prolog] (http://www.swi-prolog.org/gtrace.html) nécessite la console XPCE. – hardmath
La distribution Logtalk actuelle (http://logtalk.org/) inclut un port d'Amzi! système expert d'identification des oiseaux. Vous pouvez (également) parcourir le code source ici: http://trac.logtalk.org/browser/trunk/examples/birds Vous pouvez exécuter le port en utilisant la plupart des compilateurs Prolog (y compris SWI-Prolog) comme Compilateur dorsal Logtalk. –