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)を呼び出すと。繰り返しますが、なぜ1を追加しないので、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 に答える