1
基本問題:謂詞失敗時如何分配給實例變量?即使謂語失敗,Prolog也會實例化並分配變量
我有兩個謂詞「功能」(可能是錯誤的術語)。第一個謂詞用一個新的實例化變量(未分配)調用第二個謂詞。我爲第二個謂詞中的新變量賦值。但是,第二個謂詞失敗。我實現它的方式,由於謂詞失敗,新變量在返回第一個謂詞後仍然未賦值。
func(X, Y) :-
func2(X, NewX);
write(NewX).
func2(X, NewX) :-
NewX is X+1, false.
此打印:
| ?- func(1,1).
_283
但是,如果第二個謂詞返回像這樣真實,
func(X, Y) :-
func2(X, NewX),
write(NewX).
func2(X, NewX) :-
NewX is X+1.
然後打印:
| ?- func(1,1).
2
yes
我如何分配一個謂詞失敗的實例?