L = [a, b, c|_]。- 不完整列表的示例。我如何附加其中两个?如何反转不完整的列表?有人可以给我提示如何处理这些问题吗?
追加([x|t],y,[x|r]):-追加(t,y,r)。这就是附加两个列表的方式。
L = [a, b, c|_]。- 不完整列表的示例。我如何附加其中两个?如何反转不完整的列表?有人可以给我提示如何处理这些问题吗?
追加([x|t],y,[x|r]):-追加(t,y,r)。这就是附加两个列表的方式。
例如
?- A=[1,2,3|X], B=[a,b,c|Y], X=B.
A = [1, 2, 3, a, b, c|Y],
X = B, B = [a, b, c|Y].
这些模式几乎没有用处。
正如@Daniel Lyons 建议的那样,您也可以使用 append/3
?- A=[1,2,3|X], B=[a,b,c|Y], append(A,B,C).
A = [1, 2, 3],
X = [],
B = [a, b, c|Y],
C = [1, 2, 3, a, b, c|Y]
您可以看到这些模式之间的区别:首先直接将 X 绑定到 B(1 个推理),而 append 需要多个等于第一个列表长度的推理,才能在绑定之前到达尾部。