(define make-monitored (lambda (f) (let ((counter 0)) (lambda (message) (cond ((eq? message 'reset-count) (set! counter 0) 0) ((eq? message 'how-many-calls?) counter) (else (set! counter (1+ counter))(f message))))))) (define s (make-monitored sqrt)) (s 2) (s 'how-many-calls?) (s 2) (s 'how-many-calls?) (s 'reset-count) (s 'how-many-calls?)