我在上CS61A的课,学习scheme, 我跟着视频敲的代码,完全一样(视频里有代码,视频链接https://www.youtube.com/watch?v=0GcZKmdzPWU&list=PL6BsET-8jgYXHupEH2vUfhlvwbJddZdJM&index=5%EF%BC%89%E4%BD%86%E6%98%AF%E6%88%91%E5%9C%A8terminal 运行时总是报错,该怎么改呢
(define (evenSub s)
(if (null? s) nil
(append (evenSub (cdr s))
(map (lambda (t) (cons (car s) t))
(if (even? (car s))
(evenSub (cdr s))
(oddSub (cdr s))
)
)
(if (even? (car s)) (list (list (car s))) nil))))
(define (oddSub s)
(if (null? s) nil
(append (oddSub (cdr s))
(map (lambda (t) (cons (car s) t))
(if (odd? (car s))
(evenSub (cdr s))
(oddSub (cdr s))))
(if (odd? (car s)) (list(list((car s))) nil)))))
报错信息:
XL@mbp lab11 % python3 scheme -i evensub.scm
Welcome to the CS 61A Scheme Interpreter (version 1.2.5)
scm> (evenSub '(3 4))
Traceback (most recent call last):
0 (append (evensub (cdr s)) (map (lambda (t) (cons (car s) t)) (if (even? (car s)) (evensub (cdr s)) (oddsub (cdr s)))) (if (even? (car s)) (list (list (car s))) ()))
1 (map (lambda (t) (cons (car s) t)) (if (even? (car s)) (evensub (cdr s)) (oddsub (cdr s))))
Error: argument 1 of map has wrong type (NoneType)
scm>