在prolog中添加两个不完整的列表

时间:2013-01-16 15:52:13

标签: prolog

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

追加([X | T],Y [X | R]): - 追加(T,Y,R)。这是附加两个列表的方式。

1 个答案:

答案 0 :(得分: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个推断),而追加需要一些等于第一个列表长度的推断,以便在绑定之前到达尾部。

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