首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SWI Prolog ensure_loaded错误

SWI Prolog ensure_loaded错误
EN

Stack Overflow用户
提问于 2012-03-01 22:44:32
回答 2查看 1.2K关注 0票数 3

我正在使用SWI Prolog编写一本数学逻辑书,这本书提供了Prolog中一些算法的源代码。问题是,当我试图加载一个文件时,解释器只会提示如下内容:

代码语言:javascript
复制
load_files/2: No permission to load source `**' (Non-module file already loaded into module **; trying to load into io)

我查看了源代码,发现大多数文件都是以:

代码语言:javascript
复制
:- module(**,[***]).

紧接着是

代码语言:javascript
复制
user:file_search_path(common,'../common').
:- ensure_loaded(ops).
:- ensure_loaded(def).

而且似乎对同一个文件调用ensure_loaded两次会导致错误,如果已经加载的文件(例如ops.pl)中的一些谓词不会在第二次尝试加载它的文件中定义。

我尝试将ensure_loaded更改为use_module并进行咨询,但不起作用。

EN

回答 2

Stack Overflow用户

发布于 2012-03-03 12:31:27

我通过将所有ensure_loaded移到一个文件中解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2012-10-04 01:07:30

我自己也遇到了这个问题。

代码语言:javascript
复制
?- [test].
Warning: test.pl:1:
        test is not a current module (created)
% test compiled 0.00 sec, 3 clauses
true.

在文件上执行编辑,然后重新查询,您将遇到问题:

代码语言:javascript
复制
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

代码语言:javascript
复制
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.

现在,您的更改已加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9518216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档