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