我需要帮助完成一个解压缩函数,该函数接受一个压缩列表并返回一个包含两个列表的列表。我想要的结果如下...
(unzip '((a b) (1 2)))
'((a 1) (b 2))
(unzip '((a 1) (b 2) (c 3)))
'((a b c) (1 2 3))
(unzip '(unzip '()))
'(() ())
我可以让我的代码适用于 null 情况并使用包含两个列表的列表,但我很难弄清楚如何使其递归并适用于超过 2 个列表,例如第二个示例。
(define (unzip l)
(if (null? l)
'(() ())
(map list (car l) (car (cdr l)))))
这适用于一个空列表或两个列表,但我很难设置递归部分来处理三个或更多列表。