print-list的时候写了三个if,是个愚蠢的地方
(define (map-a proc items)
(if (null? items)
'()
(cons (proc (car items))
(map-a proc (cdr items)))))
(define nl newline)
(define print-list
(lambda (s)
(if (not (null? s)) (display (car s)))
(if (not (null? s)) (display " "))
(if (not (null? s)) (print-list (cdr s)))))
(nl)
(print-list (map-a abs '(-10 2.5 -11.6 17)))
(define square
(lambda (x) (* x x)))
(define (square-list-a items)
(if (null? items)
'()
(cons (square (car items)) (square-list-a (cdr items)))))
(define (square-list-b items)
(map-a square items))
(nl)
(print-list (square-list-a '(1 2 3 4)))
(nl)
(print-list (square-list-b '(1 2 3 4)))