(define (make-account balance password)
  (let ((limit-times 7))
    (define (withdraw amount)
      (if (>= balance amount)
          (begin (set! balance (- balance amount))
                 balance)
          "Insufficient funds"))
    (define (deposit amount)
      (set! balance (+ balance amount)))
    
    (define (reset-limit-times)
      (set! limit-times 7))
    
    (define (call-the-cops x)
      "calling the polices...")
    (define (wrong-password-warning x)
      "Wrong password, please retry")
    
    (define (dispatch pw m)
      (if (eq? pw password)
          (begin (reset-limit-times)
                 (cond ((eq? m 'withdraw) withdraw)
                       ((eq? m 'deposit) deposit)
                       (else (error "Unknown request -- MAKE-ACCOUNT" m))))
          (begin (set! limit-times (- limit-times 1))
                 (if (= 0 limit-times)
                     call-the-cops
                     wrong-password-warning))))
    dispatch))

(define acc (make-account 100 'secret-password))

((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
(define (make-account balance password)
  (let ((limit-times 7))
    (define (withdraw amount)
      (if (>= balance amount)
          (begin (set! balance (- balance amount))
                 balance)
          "Insufficient funds"))
    (define (deposit amount)
      (set! balance (+ balance amount)))
    
    (define (reset-limit-times)
      (set! limit-times 7))
    
    (define (call-the-cops x)
      "calling the polices...")
    (define (wrong-password-warning x)
      "Wrong password, please retry")
    
    (define (dispatch pw m)
      (if (eq? pw password)
          (begin (reset-limit-times)
                 (cond ((eq? m 'withdraw) withdraw)
                       ((eq? m 'deposit) deposit)
                       (else (error "Unknown request -- MAKE-ACCOUNT" m))))
          (begin (set! limit-times (- limit-times 1))
                 (if (= 0 limit-times)
                     call-the-cops
                     wrong-password-warning))))
    dispatch))

(define acc (make-account 100 'secret-password))

((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)
((acc 'some-other-password 'deposit) 50)