2012-04-29 9 views
0

イムを期待:プロローグバイナリツリー - 構文エラー:演算子がプロローグで、バイナリツリーを書き込もうとしたが、次のエラーを取得

Syntax error: Operator expected 

エラーがaddChildrenへの最初の呼び出しで、ここで発生します。

addChildren(node(Left, Right, Cand, [(Name, Profit, Weight)|T])):- 
getTotalWeight(Cand, 0, Total), 
%if total weight is less than 20 
((Total + Weight) < 20 -> %then 
    New = [Cand | (Name, Profit, Weight)], 
    addChildren(Left(_,_, New, T)), %error here 
    addChildren(Right(_,_, Cand, T)) 
; %else 
    %end). 

node(node, node, [], []). 

任意およびすべてのヘルプは高く評価されています

私は、次のノードを使用しています。

答えて

2
Left(_,_, New, T) 

は、ファンクタが変数(大文字の識別子)でない可能性があるため、有効な複合語ではありません。

left(_, _, New, T) 

代わりに、同様Rightのために使用します。

+0

また、 'addChildren(node、left、right、Cand、[(Name、Profit、Weight)| T]))の関数定義は:' 'あまりにも? – rhalliwell1

+0

@ rhalliwell1:私が説明したとおり、それは構文エラーです。 –

+0

ありがとう:) – rhalliwell1

関連する問題