【发布时间】:2012-03-01 14:44:31
【问题描述】:
我正在使用 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 并咨询但没有奏效。
【问题讨论】:
-
我也遇到了这个问题,我试过用
reconsult替换ensure_loaded,但是错误依旧存在。
标签: module prolog swi-prolog