无权重新定义 imported_procedure
No permission to redefine imported_procedure
我正在尝试创建一个名为 vertices/2
的谓词,定义为:
vertices(G, Vs):- findall(V, vertex(G, V), Vs).
当我查阅我的文件序言时,出现错误:
No permission to redefine imported_procedure `ugraph:vertices/2'
如何避免重新定义?
谢谢
SWI-Prolog 提供了一个 ugraphs
库模块,而不是 ugraph
。我认为这只是一个错字?
假设您在与 vertices/2
谓词相同的上下文中加载 ugraphs
库模块,为什么不简单地重命名您的谓词?例如。 my_vertices/2
。另一种可能的选择是加载 ugraphs
模块而不导入其谓词,方法是:
:- use_module(library(ugraphs), []).
这将解决冲突,但也需要您使用显式限定调用 ugraphs
模块谓词。
也可能是 ugraphs
模块不是由您显式加载的,而是由于您可能正在加载的其他模块而导致的。如果是这样,请打开详细的自动加载以找出加载模块的原因:
?- set_prolog_flag(verbose_autoload, true).
对于遇到此错误的其他所有人,因为这是您搜索 No permission to redefine imported_procedure prolog swi
.
时找到的第一页
发生在你身上的事情可能是你创建了一个事实作为 sumlist([],0).
,但是 sumlist 是一个已经在模块中使用的名称,所以你正在修改一个已经存在的过程,你必须做的是使用尚未使用的名称(例如将其命名为 mysumlist
而不是 sumlist
)
我正在尝试创建一个名为 vertices/2
的谓词,定义为:
vertices(G, Vs):- findall(V, vertex(G, V), Vs).
当我查阅我的文件序言时,出现错误:
No permission to redefine imported_procedure `ugraph:vertices/2'
如何避免重新定义?
谢谢
SWI-Prolog 提供了一个 ugraphs
库模块,而不是 ugraph
。我认为这只是一个错字?
假设您在与 vertices/2
谓词相同的上下文中加载 ugraphs
库模块,为什么不简单地重命名您的谓词?例如。 my_vertices/2
。另一种可能的选择是加载 ugraphs
模块而不导入其谓词,方法是:
:- use_module(library(ugraphs), []).
这将解决冲突,但也需要您使用显式限定调用 ugraphs
模块谓词。
也可能是 ugraphs
模块不是由您显式加载的,而是由于您可能正在加载的其他模块而导致的。如果是这样,请打开详细的自动加载以找出加载模块的原因:
?- set_prolog_flag(verbose_autoload, true).
对于遇到此错误的其他所有人,因为这是您搜索 No permission to redefine imported_procedure prolog swi
.
发生在你身上的事情可能是你创建了一个事实作为 sumlist([],0).
,但是 sumlist 是一个已经在模块中使用的名称,所以你正在修改一个已经存在的过程,你必须做的是使用尚未使用的名称(例如将其命名为 mysumlist
而不是 sumlist
)