2017-02-16 5 views
0

Предположим, что у меня есть 3 узла A, B и C и есть край между A и B и между B и C. Я хочу утверждать новый факт в базу данных во время выполнения, так что если есть грань между A и B и другое ребро от B до C, то я могу достичь от A до C. Я хочу, чтобы кромка (a, c) была добавлена, но у меня есть следующие проблемы: Спасибо в AdvanceДобавление новых фактов в базу данных PROLOG

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)). 
+1

'conn :-(X, C): - ...' - синтаксическая ошибка. – lurker

ответ

0

И, наконец, это работает,

: - динамический край/2. край (a, b). край (b, c).

conn (X, Y, C): - край (X, Y), ребро (Y, C), assert (ребро (X, C)).

2

dynamic декларация должна прийти первым, прежде чем определить положения Ф.О. r edge/2.

 Смежные вопросы

  • Нет связанных вопросов^_^