2014-05-13 56 views
2

我想从列表列表中反转每个列表。 我有一些东西,看起来像:列表清单列表中的反向列表序言

[[a,b],[],[c,d,e],[],[],[f,g]] 

我要的是通过列表清单中阅读和扭转每个列表,并得到这样的结果:

[[b,a],[],[e,d,c],[],[],[g,f]] 

我已经有一个相反的功能:

reverse(L, R) :- reverse(L, [], R). 
reverse([], R, R). 
reverse([H|T], A, R) :- reverse(T, [H|A], R). 

我该如何设法通读清单?

像这样的递归函数会起作用吗?

reverseLL([H|T], L) :- 
    reverse(H,NH), 
    reverseLL([T],[NH|L]). 

reverseLL([],L). 
+7

'maplist(reverse,L,R)' – false

+0

谢谢!我甚至不知道maplist甚至是prolog的存在 – MaximeHeckel

回答

1
reverseInList([],[]). 
reverseInList([H|Ts],[H1|R]):- 
    reverse(H,H1), 
    reverseInList(Ts,R). 

这通过递归在列表上,并使用库函数“扭转/ 2”扭转每个子列表。