SWI Prolog查询

Geo*_*rge 2 prolog

:- dynamic plop/2
add(Var):-
    retract(plop(Var,X))->
    (X = X+1, assert(plop(Var,X)));
    (assert(plop(Var,1))).
Run Code Online (Sandbox Code Playgroud)

所以,如果我调用add(y).它会创建plop(y,1)但是当我调用add(y)时.再次为什么不添加一个所以它将是plop(y,2)

lio*_*ori 6

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