递归列表的多个列表

Recursing multiple lists of lists

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

我想递归列表,例如获取 [[a],b,c][a]

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

感谢任何帮助。

您应该记住 [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]

不过,这"smells"。你到底想完成什么?也许有比用笨拙的嵌套列表表示树更好的方法?