【发布时间】:2016-01-16 07:14:57
【问题描述】:
我定义了一个名为 zip 的函数,它接受两个列表作为参数并返回一个配对列表。
(define (zip list1 list2)
(if (null? list1)
'()
(cons (list (cons (car list1) (car list2)))
(zip (cdr list1) (cdr list2)))))
(zip (list 1 3 5) (list 2 4 6))
> (((1 . 2)) ((3 . 4)) ((5 . 6)))
现在我基本上无法编写 this 的反函数。这就是我到目前为止所拥有的。该函数需要输出两个列表的列表。我只是尝试制作两个列表中的第一个以使自己更容易,但输出不是我想要的。
(define (unzip u-list)
(if (null? u-list)
'()
(list (car (car (car u-list))) (unzip(cdr u-list)))))
(unzip (zip (list 1 3 5) (list 2 4 6)))
> (1 (3 (5 ())))
任何帮助将不胜感激......
【问题讨论】:
标签: list recursion functional-programming scheme