2012-03-01 3 views
2

Я использую SWI Prolog для математической логической книги, а книга предоставила исходный код для некоторых алгоритмов в Prolog. Проблема заключается в том, что, когда я пытаюсь загрузить файл, интерпретатор просто подскажите что-то вроде:SWI Prolog secure_loaded error

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, например) не будет определенный в файле, который пытался загрузить его во второй раз.

Я попытался изменить security_loaded на use_module и проконсультироваться, но не работал.

ответ

1

Я решил проблему, переместив все security_loaded в один файл.

0

Я сам столкнулся с этой проблемой.

?- [test]. 
Warning: test.pl:1: 
     test is not a current module (created) 
% test compiled 0.00 sec, 3 clauses 
true. 

Выполните редактирование на файл, а затем reconsult, и вы будете иметь проблемы:

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. 

Теперь ваши изменения будут загружены.