Scheme 如何使用map编写解压?

Scheme 如何使用map编写解压?,scheme,transpose,Scheme,Transpose,我正在读Scheme编程语言书。我正在尝试做练习2.8.7: 使用map定义一个过程transpose,它获取一个对列表并返回一对列表,如下所示 (转置“((a.1)(b.2)(c.3));=>((a b c)1 2 3) [提示:((abc)123)与((abc)。(1233))相同。] 我发现(地图列表(a1)'(b2)'(c3))给了我((abc)(1233))。我想我可以通过编写大量的锅炉板来解决这个问题,将((a.1)(b.2)(c.3))转换成(地图列表(a1)“(b2)”(c3))

我正在读Scheme编程语言书。我正在尝试做练习2.8.7:

使用map定义一个过程transpose,它获取一个对列表并返回一对列表,如下所示

(转置“((a.1)(b.2)(c.3));=>((a b c)1 2 3)

[提示:((abc)123)与((abc)。(1233))相同。]

我发现
(地图列表(a1)'(b2)'(c3))
给了我
((abc)(1233))
。我想我可以通过编写大量的锅炉板来解决这个问题,将
((a.1)(b.2)(c.3))
转换成
(地图列表(a1)“(b2)”(c3))
((abc)(1233))
转换成
((abc)1233)
。然而,我相信这不是练习的重点


有人能帮我吗?是否有一种明显的方法可以使用我所缺少的地图来完成这项工作?

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

我明白了<代码>(定义(转置ziped)(cons(地图车ziped)(地图cdr ziped))。我想这不是最有效的方法,但这可能是我们的初衷。谢谢