Мне нужно написать программу, которая печатает таблицу истинных выражений.
Итак, я написал следующую функцию:
bool(true).
bool(fail).
tableBody(A,B,E) :-
bool(A),
bool(B) ,
write(A) ,
write(' '),
write(B),
write(' '),
write(E),nl, fail.
Моя проблема в том, что E (которое является выражением, содержащим A и B) не оценивается, а печатается как есть.
Например:
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.
Мне интересно написать оценочное значение and(true, true)
("and(X,Y)
" - это функтор, который я определил ранее) вместо того, что отображается в данный момент.
Я думал о написании eval-функтора, но разве это не даст такой же эффект?
Как я могу решить это?
Я использую SWI-Prolog 5.8.
Спасибо.