私のコードは、次の方法で、リストの2つのリストをアイテムごとにマージします。
mergeL([[a,b],[c,d]], [[1,2],[3,4]], Result). Result = [[a,b,1,2],[c,d,3,4]]
そして、これは私が使用するコードです:
mergeL([],[],[]).
mergeL(List, [], List).
mergeL([], List, List).
mergeL([X|Rest],[Y|Rest2], [XY|Res2]) :-
mergeL(Rest, Rest2, Res2),
append(X,Y,XY).
これは機能しているようですが、同じサイズの2つのリストで呼び出すと、3つの結果が繰り返されます。例(両方のリストに含まれる要素は1つだけです):
?- mergeL([[a,b]],[[1,2,3]],Q).
Q = [[a, b, 1, 2, 3]] ;
Q = [[a, b, 1, 2, 3]] ;
Q = [[a, b, 1, 2, 3]].
この出力を1つのソリューションのみにするクリーンな方法はありますか?