Как обновить значение в предикате в прологе

Я борюсь с обновлением значения предиката, проверяя, является ли результат предиката пустым.

next(X,Y) :- Y='to' -> checker(X).
checker(X) :-
    list(X) = true
->  retract(list(X)),
    assert(list(X)) 
;   assert(list(X)).

За next(X,Y), это перейдет в checker(X), Если list(X) пусто, оно будет утверждать значение для него. Если list(X) не пустой, он удалит предыдущий результат и добавит обновленный результат.

Это то, чего я хочу добиться в результате.

?- next(you,to).
|: true.
?- list(X).
|: X = you.
?- next(we,to).
|: true.
?- list(X).
|: X = we.

0 ответов

Другие вопросы по тегам