我为 SICP 2.20 编写的函数是:
(define (same-parity x . y)
(if (null? (car y)
'()
(if (= (even? (car y)) (even? x))
(cons (car y) (same-parity (cons x (cdr y))))
(same-parity (cons x (cdr y))))))
然后我尝试用
(same-parity 1 2 3 4 5 6 7)
我得到的错误是:“作为第一个参数传递给 integer-equal 的对象 #t?不是正确的类型。”
我认为 #t 和 #f 是平等的......
我在网上找到的一个代码示例如下,我运行它并且它可以工作。但是,我做错了什么?
(define (same-parity a . rest)
(define (filter rest)
(cond ((null? rest) '())
((= (remainder a 2) (remainder (car rest) 2))
(cons (car rest) (filter (cdr rest))))
(else
(filter (cdr rest)))))
(filter (cons a rest)))