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
Jump to: navigation, search

Problem

Let f and g be two one-argument functions. The composition f after g is defined to be the function x \mapsto f(g(x)). 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
Personal tools