试图将树结构附加到列表中。在 Erlang 中,我会使用 ++ 运算符进行追加,但在 Prolog 中执行此操作时会不断出现语法错误。
我将包括我的错误代码,它全部与我认为缺少的列表的附加有关。
tree2list(leaf(X),L++[X]).
tree2list(branch(Branch1,Branch2),L):-
tree2List(B1,L1),
tree2List(B2,L2),
L++L1++L2.
任何想法如何解决我的附加问题?
试图将树结构附加到列表中。在 Erlang 中,我会使用 ++ 运算符进行追加,但在 Prolog 中执行此操作时会不断出现语法错误。
我将包括我的错误代码,它全部与我认为缺少的列表的附加有关。
tree2list(leaf(X),L++[X]).
tree2list(branch(Branch1,Branch2),L):-
tree2List(B1,L1),
tree2List(B2,L2),
L++L1++L2.
任何想法如何解决我的附加问题?
当然,使用差异列表:
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 ?- */