Ошибка SWI Prolog sure_loaded - PullRequest
       20

Ошибка SWI Prolog sure_loaded

3 голосов
/ 01 марта 2012

Я использую 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).

, и, по-видимому, при вызове sure_loaded дважды с одним и тем же файлом возникла ошибка, и если некоторые из предикатов в уже загруженном файле (например, ops.pl) не будутопределено в файле, который пытался загрузить его во второй раз.

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

Ответы [ 2 ]

1 голос
/ 03 марта 2012

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

0 голосов
/ 03 октября 2012

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

?- [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.

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

...