【问题标题】:Adding new Facts to database PROLOG向数据库 PROLOG 添加新 Facts
【发布时间】:2017-02-16 16:25:26
【问题描述】:

假设我有 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)).

【问题讨论】:

  • conn :-(X,C):- ... 是语法错误。

标签: prolog


【解决方案1】:

必须先声明dynamic,然后再为edge/2 定义子句。

【讨论】:

    【解决方案2】:

    终于成功了,

    :- 动态边缘/2。 边缘(a,b)。 边(b,c)。

    conn(X,Y,C) :- edge(X,Y),edge(Y,C),assert(edge(X,C))。

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 2015-10-30
      • 2010-12-18
      • 2018-05-17
      • 1970-01-01
      • 2012-10-15
      相关资源
      最近更新 更多