式の真理値表を出力するプログラムを作成する必要があります。そこで、次の関数を書きました。
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 を使用しています。ありがとうございました。