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) 时。再次为什么它不加一个所以它会是 plop(y,2)

4

1 回答 1

6

因为没有 X 可以满足这种关系:X = X+1,并且规则失败。试试Y is X+1, assert(plop(Var,Y))那里。

于 2012-12-10T03:21:42.270 回答