微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

序言:无权重新定义imported_procedure错误

如何解决序言:无权重新定义imported_procedure错误

我实际上正在从事一个大学项目,并且遇到一些谓词的麻烦。 该项目涉及Dijkstra算法的重现性,并由我的教授给我写了一些谓词。

正如标题所述,我不断收到错误消息

无权重新定义imported_procedure

与谓词 vertices / 2 neighbors / 3 组成库ugraphs和带有heaps中的谓词 heap_size / 2

这是我组成它们的方式:

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

neighbors(G,V,Ns) :-
   findall(arc(G,N,W),arc(G,Ns1),findall(arc(G,Ns2),append(Ns1,Ns2,Ns).

heap_dim(H,S) :-
   heap(H,S).

我已经尝试将它们全部设置为 :-dynamic ,但没有任何变化(嗯,有些变化了:我什至得到了错误 dynamic / 1:无权重新定义imported_procedure )。

那是什么问题?为什么即使我不希望监听器继续调用这些库,它们仍会继续调用它们呢?我该怎么解决

我已经考虑过更改他们的名字,但是我不能仅仅因为我的教授希望我这样创建他们。

如果您想尝试一下,这里是项目的链接https://drive.google.com/file/d/1zRmoBDdWJkjlWzQbFs_g6sQBhRF0joaM/view?usp=sharing

如果您运行?- shortest_path(G,A,B,Path).,则侦听器会说出图G中从点A到点B的最短路径是什么(如果要尝试运行test_2(G).,请先运行{{1 }}。

所有Dijkstra的算法都是通过使用堆结构组成的

谢谢大家!

编辑:当我尝试编译程序时,有screen关于Prolog的监听器

我正在运行的确切源文件是上面链接文件:在emacs上,我打开的文件实际上位于您在图像中看到的路径上

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。