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, [], []).

ありとあらゆる助けをいただければ幸いです。

4

1 に答える 1

2
Left(_,_, New, T)

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

left(_, _, New, T)

代わりに、同様にRight

于 2012-04-29T13:05:21.900 に答える