我正在阅读计划编程语言一书。我正在尝试做练习2.8.7:
使用map定义一个过程,转置,它获取一对列表并返回一对列表,如下所示。
(转置'((a.1)(b.2)(c.3)));; => ((a b c)1 2 3)
[提示:((a b c)1 2 3)与((a b c)。(1 2 3))相同。]
我发现(map list '(a 1) '(b 2) '(c 3))
给了我'((a b c) (1 2 3))
。我想我可以通过编写大量的锅炉板来解决这个问题,将'((a . 1) (b . 2) (c . 3))
转换为(map list '(a 1) '(b 2) '(c 3))
和'((a b c) (1 2 3))
转换为((a b c) 1 2 3)
。但是,我确信这不是练习的重点。
任何人都可以帮助我吗?是否有一种明显的方法可以使用我缺少的地图来做到这一点?
答案 0 :(得分:1)
是。显而易见的解决方案是调用map
两次,然后cons
将两个结果放在一起。