保存变量Prolog

时间:2011-03-06 14:20:20

标签: variables prolog save

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

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

1 个答案:

答案 0 :(得分:5)

您想要的Prolog功能可能是对 myListVars / 1 等动态谓词的断言/撤销,这只会保存您随后可以检索的指定值列表。

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

setListXYZ(_,_,_) :-
    retract(myListXYZ(_)),
    fail.
setListXYZ(X,Y,Z) :-
    assert(myListXYZ([X,Y,Z])).

并使用如下谓词检索:

getListXYZ(X,Y,Z) :-
    myListXYZ([X,Y,Z]).

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

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