## **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

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