将列表作为两个列表的连续并集

Make a list as the consecutive union of two lists

我正在尝试做一个谓词 unionlist(union,list1,list2),其中 "union" 是形成的列表作为 "list1""list2" 的并集。此列表不能为空。

例如:

unionlist(L,[a,b],[c,d]).

输出应该是:

L=[a,b,c,d]

另一个例子:

unionlist([a,b],L1,L2).

输出应该是:

L1=[a],L2=[b] ;
no

请帮忙。谢谢!

追加后只需要检查两者是否非空即可,

unionlist(Union, L1, L2) :-
    append(L1, L2, Union),
    length(L1, Len1),
    Len1 > 0,
    length(L2, Len2),
    Len2 > 0.

[编辑] - 在开头追加,以便可以反向使用谓词