假设我有3个节点A,B和C,并且在A和B之间以及B和C之间存在边缘。我想在运行时向数据库断言一个新的事实,这样如果有边缘在A和B之间以及从B到C的另一个边缘然后我可以从A到C.我想要添加边缘(a,c)但是我有以下问题,在此先感谢
dynamic/1: No permission to modify static procedure `edge/2'
ERROR: [Thread pce] c:/users/win7/documents/prolog/test.pl:6: Syntax error: Operator expected
这是我的代码:
edge(a,b).
edge(b,c).
:- dynamic edge/2.
conn :-(X,C):- edge(X,Y),edge(Y,C),assert(edge(X,C)).
答案 0 :(得分:3)
在为dynamic
定义条款之前,edge/2
声明必须先出现。
答案 1 :(得分:-1)
最后它有效,
: - 动态边缘/ 2。 边缘(A,B)。 边(B,C)。
conn(X,Y,C): - 边(X,Y),边(Y,C),断言(边(X,C))。