Нет разрешения на переопределение import_procedure - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь создать предикат с именем vertices/2, определенный как:

vertices(G, Vs):- findall(V, vertex(G, V), Vs).

Когда я обращаюсь к моему файлу, пролог выдает ошибку:

Нет разрешения на переопределение import_procedure `ugraph: vertices / 2 '

Как мне избежать переопределения?

Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

SWI-Prolog предоставляет библиотечный модуль ugraphs, а не ugraph. Я полагаю, это только опечатка?

Если вы загружаете библиотеку ugraphs в том же контексте, что и ваш предикат vertices/2, почему бы просто не переименовать ваш предикат? Например. my_vertices/2. Другой возможный вариант - загрузить модуль ugraphs без импорта его предикатов, используя:

:- use_module(library(ugraphs), []).

Это разрешит конфликт, но также потребует, чтобы вы вызывали предикат модуля ugraphs, используя явную квалификацию.

Может также случиться, что модуль ugraphs загружается не вами явно, а как следствие других модулей, которые вы можете загружать. Если это так, включите многословную автозагрузку, чтобы узнать, почему загружается модуль:

?- set_prolog_flag(verbose_autoload, true).
...