Один из способов добиться этого без изменения определения предиката - настроить запрос следующим образом:
?- [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 Prolog:
1 ?- write(A).
_G1338
true.
Переименование обычно выполняется как часть процесса решения проблемы Prolog, чтобы гарантировать, что любые два отдельных вызова одного и того же предиката не мешают друг другу.
Таким образом, если в SWI Prolog используются имена, такие как _G1338
, используемая вами реализация Prolog, очевидно, использует имена только с цифрами после подчеркивания, например _40
.