SICP 习题2.21 square-list

(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)))

你可能感兴趣的:(SICP)