2012-07-19 70 views
1

我想編寫一個反轉列表中的所有子列表(但只有頂級子列表)的函數。我試圖弄清楚我是否可以只使用filter這個清單,然後使用mapmap(filter list? (reverse '((1 2) 9 (16 5) 64))),但這只是逆轉到((16 5) (1 2))。 我在尋找一個輸出:((2 1) 9 (5 16) 64))映射和反向子列表

我應該使用mapreverse,但我只是無法在那裏開始。

+0

如果這是家庭作業,它應該被標記爲這樣。 – crashmstr 2012-07-19 18:58:40

回答

3

這很簡單,你只需要問,如果每個項目是試圖扭轉之前的列表:

(define lst '((1 2) 9 (16 5) 64)) 

(map (lambda (e) 
     (if (list? e) (reverse e) e)) 
    lst) 

> '((2 1) 9 (5 16) 64) 

filter不會在這種情況下工作,因爲你有興趣處理所有輸入列表中的元素,即使只有實際的列表需要顛倒。

+0

非常感謝! – 2012-07-19 20:53:51

+0

@AdeqHero歡迎您!如果這個答案對你有幫助,請點擊左邊的複選標記,考慮接受它是否正確 – 2012-07-19 20:56:48