在不改变谓词定义的情况下实现这一目标的一种方法是调整查询,如下所示:
?- [CIN, A, B] = [0, 1, 1]
,sumbit(CIN
,A
,B
,CO
,R)
,write(CIN),nl
,write(A),nl
,write("+"),nl
,write(B),nl
,write("--"),nl
,write(CO),write(R),nl.
现在,所有变量都由调用本身或在调用之前实例化。
当变量未实例化时,没有可打印的值,因此会打印其“名称”。但由于未使用的名称本身没有任何意义,因此系统可以自由地将其重命名为任何名称。在 SWI 序言中:
1 ?- write(A).
_G1338
true.
重命名通常作为 Prolog 问题解决过程的一部分进行,以确保同一谓词的任何两个单独调用不会相互干扰。
因此,SWI Prolog 使用类似名称_G1338
,您正在使用的 Prolog 实现显然仅使用下划线后面带有数字的名称,例如_40
.