SICP Exercise 2.21

Question

The procedure square-list takes a list of numbers as argument and returns a list of the squares of those numbers.

(square-list (list 1 2 3 4))
(1 4 9 16)

Here are two different definitions of square-list. Complete both of them by filling in the missing expressions:

(define (square-list items)
  (if (null? items)
      nil
      (cons ?? ??)))

(define (square-list items)
  (map ?? ??))

Answer

(define (square-list-1 items)
  (if (null? items)
      nil
      (cons
       (square (car items))
       (square-list-1 (cdr items)))))

(define (square-list-2 items)
  (map square items))

(square-list-1 (list 1 2 3 4))
(square-list-2 (list 1 2 3 4))

Results:

(1 4 9 16)
(1 4 9 16)