Как написать распаковать, используя карту?
Я читаю книгу "Язык программирования схем". Я пытаюсь сделать упражнение 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
объединяя два результата.