solution 6.2 The point of this example is to see the difference between defining a variable and a parameterless procedure. The expression whose value is attached to the variable at definition is computed once, and we get this value each time we access the variable. The procedure body is not computed at definition, but each time we call the procedure we in effect compute the body again. In general, if count-2 is defined as a procedure without paremeters, then when we evaluate (count-2), it is called, and when we simply evaluate count-2, we just obtain as a result (a pointer to) the procedure object. solution 6.3 (define (make-counting-proc f) (let ((count 0)) (lambda (x) (set! count (+ count 1)) (display "applied ") (display count) (display " times") (newline) (f x)))) solution 6.4 (define prev (let ((last-val '*first-call*)) (lambda (input) (let ((tmp last-val)) (set! last-val input) tmp)))) solution 6.5 (define (make-prev last-val) (lambda (input) (let ((tmp last-val)) (set! last-val input) tmp)))