我正在使用 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 并进行咨询,但没有奏效。