Number of procedure calls

In software-testing applications, it is useful to be able to count the number of times a given procedure is called during the course of a computation. Write a procedure make-monitored that takes as input a procedure, f , that itself takes one input. The result returned by make-monitored is a third procedure, say mf , that keeps track of the number of times it has been called by maintaining an internal counter. If the input to mf is the special symbol how-many-calls? , then mf returns the value of the counter. If the input is the special symbol reset-count, then reset-count, mf resets the counter to zero. For any other input, mf returns the result of calling f on that input and increments the counter. For instance, we could make a monitored version of the sqrt procedure:

(define s (make-monitored sqrt))
(s 100)
10
(s 'how-many-calls?)
1

There are no comments yet.

Authentication required

You must log in to post a comment.

Login
(define s (make-monitored sqrt))

(check-equal? (s 100) 10)
(check-equal? (s 25) 5)
(check-equal? (s 'how-many-calls?) 2)
(check-equal? (s 'reset-count) 0)
(check-equal? (s 100) 10)
(check-equal? (s 'how-many-calls?) 1)