我遇到了一个问题,需要我将元素添加到遍布各种谓词的列表中。我没有选择使用基于参数的列表,而是选择使用动态列表谓词。我可以在下面看到简单的例子。当我最初使用它时它工作正常,但现在如果我使用任何参数作为X它仍然保持从列表中检索以前的参数数据,即使在关闭程序和重新编译之后。有人知道它有什么问题吗?
//list declarations
:- dynamic listD/1.
listD([]).
//pushes X onto the list then retrieves the entire list for verification
sample(X):-
assert(listD(X)),
listD(Y),
write(Y).
Example usage
sample([adam]).
//prints adam fine
sample([fred]).
//prints adam again
答案 0 :(得分:0)
启动时使用retractall
清除状态。
sample(X):-
retractall(listD(_)),
assert(listD(X)),
listD(Y),
write(Y).