如何解决序言:无权重新定义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 举报,一经查实,本站将立刻删除。