(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")))))))
  
