2017-02-16 11 views
0

ノードA、B、Cが3つあり、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)). 
+1

'conn :-(X、C): - ...'は構文エラーです。 – lurker

答えて

0

最後には、

作品: - 動的エッジ/ 2。 エッジ(a、b)。 エッジ(b、c)。 (X、Y、C):エッジ(X、Y)、エッジ(Y、C)、アサート(エッジ(X、C))。

2

あなたはFO条項を定義した前dynamic宣言は、最初に来なければなりませんr edge/2

関連する問題