Answered step by step
Verified Expert Solution
Question
1 Approved Answer
in lisp scheme! The ``f'' may take any number of arguments. See the examples below. You may have to use ``apply''. please check the test
in lisp scheme!
Exercise 3.2. 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 nake-nonitored is a third procedure, say nf, that keeps track of the number of times it has been called by maintaining an internal counter. If the input to nf is the special symbol howmany-ca11s? then mf returns the value of the counter. If the input is the special symbol reset-count, then af resets the counter to zero. For any other input, mf retums the result of calling f on that input and increments the counter. For instance, we could make a monitored version of the sqet procedure: (define : (make-monitored sqrt)) (s 1ec) 19 (a "how-many-ca11s?) The ``f'' may take any number of arguments. See the examples below.
You may have to use ``apply''.
please check the test example and see if results are correct or not!
the code rn:
(define (make-monitored f)
(let ((counter 0))
(lambda (x)
(cond
((eq? x 'how-many-calls?) counter)
((eq? x 'reset-count) (set! counter 0))
(else
(begin
(set! counter (+ counter 1))
(apply f x)))))))
the problem might show:
assertion-violation: wrong number of arguments [tail-call]
(#{procedure 8544 (unnamed in make-monitored)} '())
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started