是否可以在Prolog中保存变量?
我想在程序运行时保存并编辑列表,但无论如何我都找不到在编辑之间保存列表。
答案 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程序的测试用例,其中手动输入所需的参数是不方便的。通过添加一个“标记”测试用例的额外参数,可以容纳多个测试用例。