如何使用map解压缩?

时间:2012-08-03 02:43:54

标签: scheme transpose

我正在阅读计划编程语言一书。我正在尝试做练习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)。但是,我确信这不是练习的重点。

任何人都可以帮助我吗?是否有一种明显的方法可以使用我缺少的地图来做到这一点?

1 个答案:

答案 0 :(得分:1)

是。显而易见的解决方案是调用map两次,然后cons将两个结果放在一起。