我需要编写一个可以打印表达式真值表的程序,因此我编写了以下函数:
bool(true).
bool(fail).
tableBody(A,B,E) :-
bool(A),
bool(B) ,
write(A) ,
write(' '),
write(B),
write(' '),
write(E),nl, fail.
我的问题是,包含A和B的表达式E没有被计算,而是按原样打印出来。例如:
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。
谢谢。