University of Washington • CSE583 • D. Notkin © 2000
56
Funarg example
l(define (compose f g)
(lambda (x) (f (g x))))
l(define double-square
  (compose double square))
l(define square-double
  (compose square double))
l(let ((square (lambda (y) (* y y y))))
 (define d-square
   (compose double square))
 (double-square 5)           ; which square?
 (square-double 5)           ; which square?
 (d-square 5))               ; which square?
l
Remember: compose returns a function like
(lambda (x)
  (double (square x)))