gpt4 book ai didi

prolog - Prolog 中的事实持久化

转载 作者:行者123 更新时间:2023-12-04 15:33:55 28 4
gpt4 key购买 nike

我是 Prolog 的新手,我正在使用 SWI-Prolog v6.6 在 *.pl 中存储断言文件。

:- dynamic fact/2.

assert(fact(fact1,fact2)).
使用上面的代码,我可以进行断言并且工作正常,但是问题是当我关闭 SWI-Prolog 并打开 *.pl 时再次提交文件,我所做的断言消失了......
有没有办法做出断言,即使我退出 Prolog 过程,这些断言也会被存储?
抱歉我的英语不好,谢谢! (:

最佳答案

保存状态有一定的limitations ,另见 recent discussion在 SWI-Prolog 邮件列表中。

我认为在 SWI-Prolog 上持久存储事实的最简单方法是使用 persistency图书馆。为此,我将按以下方式重写您的代码:

:- use_module(library(persistency)).

:- persistent fact(fact1:any, fact2:any).

:- initialization(init).

init:-
absolute_file_name('fact.db', File, [access(write)]),
db_attach(File, []).

您现在可以使用 assert_fact/2 添加/删除事实, retract_fact/2 , 和 retractall_fact/2 .

退出 Prolog 后,断言的事实会自动保存到 fact.db .

用法示例:
$ swipl my_facts.pl
?- assert_fact(some(fact), some(other,fact)).
true.
?- halt.
$ swipl my_facts.pl
?- fact(X, Y).
X = some(fact),
Y = some(other, fact).

关于prolog - Prolog 中的事实持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com