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