递归多个列表列表

时间:2015-04-19 00:07:02

标签: prolog

假设我们有一个列表:[[[[a],b,c],a,b,[a,b]]]

例如,我想在列表中加一个get [[a],b,c][a]

做这样的事情:listsplit([H|T], H, T).当回头时我只到达列表的一个级别。我尝试递归地做但没有用。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你应该记住,[H | T]只是语法糖:列表只是二叉树,头部总是一片叶子。所以你可以像其他树一样解构它:

| ?- X = [[[[a],b,c],a,b,[a,b]]], X = [[Y|_]|_], X = [[[Z|_]|_]|_].

这导致:

X = [[[[a],b,c],a,b,[a,b]]]
Y = [[a],b,c]
Z = [a]

然而,这"气味"。你到底想要完成什么?也许有更好的方法然后通过笨拙的嵌套列表表示树?