1

ツリー構造をリストに追加しようとしています。Erlang では追加に ++ 演算子を使用しますが、Prolog でこれを行うと構文エラーが発生し続けます。

エラーコードを含めます。欠落していると思われるリストの追加に関するすべてです。

tree2list(leaf(X),L++[X]).
tree2list(branch(Branch1,Branch2),L):-
tree2List(B1,L1),
tree2List(B2,L2),
L++L1++L2.

追加の問題を解決する方法はありますか?

4

1 に答える 1

1

もちろん、差分リストを使用してください:

tree2list(leaf(X),[X|A]-A).
tree2list(branch(B1,B2),L-Z):-
        tree2list(B1,L-A),
        tree2list(B2,A-Z).

/* 7 ?- tree2list(branch(leaf(1),leaf(2)), L-[]).
L = [1, 2] ;
No
8 ?- */

しかし、あなたの木には空の枝がないようです。次のように追加します。

tree2list(empty,A-A).

/* 10 ?- tree2list(branch(branch(leaf(1),leaf(2)),empty), L-[]).
L = [1, 2] ;
No
11 ?- */
于 2012-08-29T20:12:57.660 に答える