我正在使用SWI Prolog编写一本数学逻辑书,这本书提供了Prolog中一些算法的源代码。问题是,当我试图加载一个文件时,解释器只会提示如下内容:
load_files/2: No permission to load source `**' (Non-module file already loaded into module **; trying to load into io)我查看了源代码,发现大多数文件都是以:
:- module(**,[***]).紧接着是
user:file_search_path(common,'../common').
:- ensure_loaded(ops).
:- ensure_loaded(def).而且似乎对同一个文件调用ensure_loaded两次会导致错误,如果已经加载的文件(例如ops.pl)中的一些谓词不会在第二次尝试加载它的文件中定义。
我尝试将ensure_loaded更改为use_module并进行咨询,但不起作用。
发布于 2012-03-03 12:31:27
我通过将所有ensure_loaded移到一个文件中解决了这个问题。
发布于 2012-10-04 01:07:30
我自己也遇到了这个问题。
?- [test].
Warning: test.pl:1:
test is not a current module (created)
% test compiled 0.00 sec, 3 clauses
true.在文件上执行编辑,然后重新查询,您将遇到问题:
test: ?- [test].
ERROR: load_files/2: No permission to load source `test.pl'
(Non-module file already loaded into module user; trying to load into test)解决方案:使用make/0
test: ?- make.
% Updating index for library <snip>/packages/pl-6.2.2/lib/swipl-6.2.2/library/
% test compiled 0.00 sec, 2 clauses
true.现在,您的更改已加载。
https://stackoverflow.com/questions/9518216
复制相似问题