2012-12-10 173 views
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查詢

+1

請不要完全改變這個問題。如果您有新問題,請使用「提問問題」按鈕提出新問題。 –

回答

6

因爲沒有X會履行這種關係:X = X+1,並且規則失敗。改爲嘗試Y is X+1, assert(plop(Var,Y))