(require (lib "trace.ss")) ;PROBLEM 1 (define (for-each-element prod lista) (define (loop) (if (null? lista) (void) (begin (prod (car lista)) (set! lista (cdr lista)) (loop)))) ;(trace loop) (loop)) ;(trace for-each-element) ;PROBLEM 2 (define (rev l) (let ((res '())) ; introduce a local variable for the result (define (loop) (if (null? l) res (begin (set! res (cons (car l) res)) (set! l (cdr l)) (loop)))) (loop))) ;PROBLEM 3 (define (count-call) (let((x 0)) (lambda arg (begin (cond((null? arg) (set! x (+ x 1)) x) ((eq? (car arg) 'reset) (set! x 0)) ((eq? (car arg) 'how-many-calls) x) ))))) (define count (count-call))