我是Prolog的新手,我正在使用SWI-Prolog来解决以下问题.我有几个文件dataBase1.pl
,dataBase2.pl
...具有相同的结构(基于此线程)
:- module(dataBase1,[]).
:- use_module(library(persistency)).
:- persistent
predicate1(A:any, B:any),
predicate2(A:any, B:any).
:- initialization(init).
init :-
absolute_file_name('dataBase1.db', File, [access(write)]),
db_attach(File, []).
Run Code Online (Sandbox Code Playgroud)
predicate1/2, predicate2/2
对所有数据库文件都是通用的.
然后,我在第三个文件中定义了predicates.pl
几个使用以前数据库中的子句的子句,例如testPredicate(A,B) :- predicate1(A,B), predicate2(A,B).
我的问题是我希望predicate1/2, predicate2/2
从与数据库文件对应的所有模块中使用上面的子句.在当前状态下,我需要精确上下文模块才能使用
predicate1/2, predicate2/2
(即dataBase1:predicate1/2, dataBase2:predicate1/2,...
.)
我无法使用,use_module/1
因为我将动态添加/删除数据库文件.
提前感谢任何建议!
编辑:在评论中讨论之后,如何将表单的可查询谓词定义head(X,Y) :- body()
为持久动态谓词?
归档时间: |
|
查看次数: |
333 次 |
最近记录: |