Note: this wiki is now retired and will no longer be updated!

The static final versions of the pages are left as a convenience for readers. Note that meta-pages such as "discussion," "history," etc., will not work.

SICP exercise 2.21

From Drewiki
Jump to: navigation, search

Problem

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

Output:

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

Solution

Here's the complete first definition, plus the definition of square from our previous exercises:

(define (square x) (* x x))
 
(define nil (quote ()))
 
(define (square-list items)
  (if (null? items)
      nil
      (cons (square (car items)) (square-list (cdr items)))))

Test:

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

Output:

(1 4 9 16)


And now the complete second definition:

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

Test:

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

Output:

(1 4 9 16)
Personal tools