2
:- dynamic plop/2
add(Var):-
retract(plop(Var,X))->
(X = X+1, assert(plop(Var,X)));
(assert(plop(Var,1))).
所以,如果我打電話add(y)。它會創建plop(y,1),但是當我調用add(y)時。再次爲什麼不會添加一個到所以它會撲通(y,2)SWI Prolog查詢
:- dynamic plop/2
add(Var):-
retract(plop(Var,X))->
(X = X+1, assert(plop(Var,X)));
(assert(plop(Var,1))).
所以,如果我打電話add(y)。它會創建plop(y,1),但是當我調用add(y)時。再次爲什麼不會添加一個到所以它會撲通(y,2)SWI Prolog查詢
因爲沒有X會履行這種關係:X = X+1
,並且規則失敗。改爲嘗試Y is X+1, assert(plop(Var,Y))
。
請不要完全改變這個問題。如果您有新問題,請使用「提問問題」按鈕提出新問題。 –