Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想编写一个函数来反转列表中的所有子列表(但只有顶层的子列表)。我试图弄清楚我是否可以只filter列出列表并reverse在使用之前map通过做做 (filter list? (reverse '((1 2) 9 (16 5) 64))),但这只是反过来((16 5) (1 2))。我正在寻找类似的输出:((2 1) 9 (5 16) 64)).
filter
reverse
map
(filter list? (reverse '((1 2) 9 (16 5) 64)))
((16 5) (1 2))
((2 1) 9 (5 16) 64))
我应该使用mapand reverse,但我无法从那里开始。
这很简单,您只需要在尝试反转它之前询问每个项目是否是一个列表:
(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在这种情况下不起作用,因为您有兴趣处理输入列表中的所有元素,即使只需要反转实际列表。