保存变量Prolog

Jon*_*Jon 2 variables prolog save

是否可以在Prolog中保存变量?

我想在程序运行时保存并编辑列表,但无论如何我都找不到在编辑之间保存列表.

har*_*ath 5

你想要的Prolog功能可能是像myListVars/1这样的动态谓词的断言/撤销,它只会保存你随后可以检索的指定值列表.

例如,如果您X,Y,Z想要记录三个变量,可以将它们保存到动态事实myListXYZ/1中,并使用如下谓词:

setListXYZ(_,_,_) :-
    retract(myListXYZ(_)),
    fail.
setListXYZ(X,Y,Z) :-
    assert(myListXYZ([X,Y,Z])).
Run Code Online (Sandbox Code Playgroud)

并使用如下谓词检索:

getListXYZ(X,Y,Z) :-
    myListXYZ([X,Y,Z]).
Run Code Online (Sandbox Code Playgroud)

这种方法假设你一次只有(最多)myListXYZ/1的一个事实,如果只通过上面的get/set对访问该谓词,这是有保证的.

我经常使用类似的"事实"谓词来存储Prolog程序的测试用例,其中手动输入所需的参数是不方便的.通过添加一个"标记"测试用例的额外参数,可以容纳多个测试用例.