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

From Drewiki

## Problem

Let *f* and *g* be two one-argument functions. The *composition* *f* after *g* is defined to be the
function . Define a procedure `compose` that implements composition. For example, if `inc` is a
procedure that adds 1 to its argument,

((compose square inc) 6)

evaluates to 49.

## Solution

The solution is straightforward. It looks very much like its mathematical analogue:

(define (compose f g) (lambda (x) (f (g x))))

Let's test:

(define (square x) (* x x)) (define (inc x) (+ x 1)) ((compose square inc) 6)

*Output:*

`
`

49