2

L = [a, b, c|_]。- 不完整列表的示例。我如何附加其中两个?如何反转不完整的列表?有人可以给我提示如何处理这些问题吗?

追加([x|t],y,[x|r]):-追加(t,y,r)。这就是附加两个列表的方式。

4

1 回答 1

2

例如

?- 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 需要多个等于第一个列表长度的推理,才能在绑定之前到达尾部。

您可以在此处阅读有关不完整数据结构的更多信息。最有用的模式是difference lists的基础。

于 2013-01-16T17:18:44.263 回答