Je dois écrire un programme qui imprime une table de vérité d'expressions. Donc, j'ai écrit la fonction suivante:Logique de premier ordre Prolog - Impression d'une table de vérité
bool(true).
bool(fail).
tableBody(A,B,E) :-
bool(A),
bool(B) ,
write(A) ,
write(' '),
write(B),
write(' '),
write(E),nl, fail.
Mon problème est que E (Wich est l'expression qui contient A et B) ne sont pas évalués, mais imprimé est. Par exemple:
296 ?- table(A,B,and(A,B)).
A B expr(A,B)
true true and(true, true)
true fail and(true, fail)
fail true and(fail, true)
fail fail and(fail, fail)
false.
Je suis intéressé à écrire la valeur évaluée de and(true, true)
(« and(X,Y)
» est un foncteur je définissais plus tôt) au lieu de ce qui est affiché. J'ai pensé écrire un foncteur Eval, mais cela n'aurait-il pas le même effet? Comment puis-je résoudre ce problème? Je utilise SWI-Prolog 5.8. Merci.
curieux, je ne comprends pas Prolog, mais même en utilisant les connaissances/expériences de programmation existantes, je ne peux même pas comprendre à distance ce que fait ce code. Haha. –