Как написать распаковать, используя карту?

Я читаю книгу "Язык программирования схем". Я пытаюсь сделать упражнение 2.8.7:

Используйте map для определения процедуры, транспонирования, которая берет список пар и возвращает пару списков следующим образом.

(транспонировать '((a. 1) (b. 2) (c. 3)));; => ((abc) 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 ответ

Решение

Да. Очевидное решение включает в себя вызов map дважды, а затем consобъединяя два результата.

Другие вопросы по тегам