Functional programming 如何将球拍/方案中的偶数列表更改为奇数列表?

Functional programming 如何将球拍/方案中的偶数列表更改为奇数列表?,functional-programming,scheme,racket,Functional Programming,Scheme,Racket,对于偶数列表,我有以下代码: (define (even xs) (cond ((null? xs) '()) ((eq? (cdr xs) '()) '()) (else (cons (cadr xs) (even (cddr xs)))))) ;(even-list '(a b c d)) produces (b d) 如果(奇数列表’(a b c d))被插入,我如何对产生(a c)的奇数列表执行相同的操作。我确信您被

对于偶数列表,我有以下代码:

(define (even xs)
    (cond
        ((null? xs) '())   
        ((eq? (cdr xs) '()) '()) 
        (else (cons (cadr xs) (even (cddr xs)))))) 
;(even-list   '(a b c d)) produces (b d)

如果(奇数列表’(a b c d))被插入,我如何对产生(a c)的奇数列表执行相同的操作。

我确信您被要求自己完整地写出来。为此,请注意(在您提供的代码中)您正在检查
cdr
是否为空列表,因为您将
cadr
作为第一个元素

对于赔率,您不需要
cadr
。第一个元素已经位于奇数位置

但你也可以使用一个简单的技巧


问题:
(cons 1 xs)
xs
的长度有什么影响?

您已经知道
null?
–用
(null?(cdr xs))
替换
(eq?(cdr xs)())