这是原问题:
就是找出一个列表中所有奇偶性跟指定正整数一样的数字,并且输出一个新列表。
这是我的答案:
#lang sicp
(define (par? x)
(remainder x 2))
(define (same_parity x . y)
(let ((par (remainder x 2)))
(if (null? (car y))
nil
(if (= (par? (car y)) par)
(cons (list (car y)) (same_parity x . (cdr y)))
(same_parity x . (cdr y))))))
(define test_lst (list 1 2 3 4 5 6 7 8))
测试时的代码:
(same_parity 3 test_lst)
报错信息:
remainder: contract violation
expected: integer?
given: (1 2 3 4 5 6 7 8)
我问过chatgpt了它没找出问题,我的(car y)没有成功提取出第一个列表元素,而是直接把整个列表输入到remainder函数里去了,为什么啊!?