(define andys-extra-credit (let ((ec (vector 0))) (lambda (message) (cond ; Increment count ((eq? message ':more!) (if (< (vector-ref ec 0) 3) (vector-set! ec 0 (+ 1 (vector-ref ec 0))) (error "That's enough extra credit!"))) ; Get count ((eq? message ':check) (vector-ref ec 0)) ; Default (else (error "Bozo")))))) ; Goal: Create a procedure that returns extra-credit ; objects (define make-ec (lambda () (let ((ec (vector 0))) (lambda (message) (cond ; Increment count ((eq? message ':more!) (if (< (vector-ref ec 0) 3) (vector-set! ec 0 (+ 1 (vector-ref ec 0))) (error "That's enough extra credit!"))) ; Get count ((eq? message ':check) (vector-ref ec 0)) ; Default (else (error "Bozo")))))))