我正在尝试创建一个称为vertices/2
的谓词,定义为:
vertices(G, Vs):- findall(V, vertex(G, V), Vs).
当我查阅文件序言时,出现错误:
无权重新定义imported_procedure`ugraph:vertices / 2'
如何避免重新定义?
谢谢
最佳答案
SWI-Prolog提供了一个ugraphs
库模块,而不是ugraph
。我认为那只是一个错字?
假设您要在与ugraphs
谓词相同的上下文中加载vertices/2
库模块,为什么不简单地重命名谓词呢?例如。 my_vertices/2
。另一个可能的选择是,您可以使用以下方式加载ugraphs
模块而不导入其谓词:
:- use_module(library(ugraphs), []).
这将解决冲突,但也将要求您使用显式限定来调用
ugraphs
模块谓词。也有可能不是您明确地加载了
ugraphs
模块,而是由于您可能正在加载其他模块。如果是这种情况,请打开详细的自动加载以找出加载模块的原因:?- set_prolog_flag(verbose_autoload, true).