2014-05-13 55 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」扭轉每個子列表。