2017-02-16 7 views
0

Angenommen, ich habe 3 Knoten A, B und C und es gibt Kante zwischen A und B und zwischen B und C. Ich möchte eine neue Tatsache zur Datenbank während der Laufzeit behaupten, so dass Wenn es eine Kante zwischen A und B und eine andere Kante von B nach C gibt, dann kann ich von A nach C gehen. Ich möchte die Kante (a, c) hinzufügen, aber ich habe die folgenden Probleme, Vielen Dank im VorausHinzufügen neuer Fakten zur Datenbank 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 

dies ist mein Code:

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): - ...' ist ein Syntaxfehler. – lurker

Antwort

0

Schließlich funktioniert es,

: - dynamische Kante/2. Kante (a, b). Kante (b, c).

Verbindung (X, Y, C): - Kante (X, Y), Kante (Y, C), Assert (Kante (X, C)).

2

Die dynamic Erklärung an erster Stelle stehen müssen, bevor Sie Klauseln definiert fo r edge/2.

Verwandte Themen