2

我正在阅读The Scheme Programming Language一书。我正在尝试做练习 2.8.7:

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

(转置'((a . 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)

有谁可以帮我离开这里吗?有没有一种明显的方法可以使用我缺少的地图来做到这一点?

4

1 回答 1

1

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

于 2012-08-03T03:08:45.720 回答