(define factorial (lambda (n) (compute n 1))) (define compute (lambda (n result) (if (zero? n) (done result) (compute (- n 1) (* result n))))) (define done (lambda (result) result))