首页 文章

将新事实添加到数据库PROLOG

提问于
浏览
0

假设我有3个节点A,B和C,并且在A和B之间以及B和C之间存在边缘 . 我想在运行时向数据库断言一个新的事实,这样如果A和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)).

2 回答

  • 2

    在为 edge/2 定义子句之前,必须先声明 dynamic 声明 .

  • 0

    最后它有效,

    : - 动态边缘/ 2 . 边缘(A,B) . 边(B,C) .

    conn(X,Y,C): - 边(X,Y),边(Y,C),断言(边(X,C)) .

相关问题