2012-07-19 73 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