2012-08-03 46 views
2

我在阅读方案编程语言的书。我试图做练习2.8.7:如何使用地图解压缩?

使用map来定义一个过程,转置,它取对的列表并返回一对列表,如下所示。

(。移调“((1)(B 2)(C 3))。);; =>((ABC)1 2 3)

[提示:((ABC)1 2 3)是相同的((ABC)。(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

是的。显而易见的解决方案包括两次呼叫map,然后cons两个结果。

+1

我明白了! '(定义(转置ziped)(cons(地图汽车ziped)(地图cdr ziped)))'。我想这不是最有效的方式,但它可能是预期的。谢谢! – 2012-08-03 03:51:15