我定义了一个称为zip的函数,它将两个列表作为参数并返回一个列表对。Scheme Inverse List Function
(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)))
现在我基本上在写这个反函数时遇到了麻烦。这是我迄今为止所拥有的。该功能需要输出两个列表的列表。我只是试图使两个列表中的第一个让我更容易,但输出不是我想要的。
(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())))
任何帮助,将不胜感激......
很好的答案。感谢分享。 – naomik
感谢您的帮助!这现在更有意义。 – spidey2623