私は、医師が 5 人の患者だけを診察してからプログラムが終了するプログラムを作成しようとしています。現在、それは終わらず、次の患者を求め続けています。ドクター ドライバー ループ プロシージャの else を無視します。その手順でカウントするために1を追加しますが、毎回ゼロに戻り続けると思います。これを修正するにはどうすればよいですか?
(define count 0)
(define (new-patient counter)
(if (= counter 5) (write-line 'doctor has seen 5 patients today so the day is now over)
(visit-doctor (ask-patient-name))))
(define (doctor-driver-loop name earlier-responses)
(newline)
(write '**)
(let ((user-response (read)))
(cond ((equal? user-response '(goodbye))
(write-line (list 'goodbye name))
(write-line '(see you next week))
(new-patient (+ 1 count)))
(else (write-line (reply (responses-list earlier-responses user-response) user-response))
(doctor-driver-loop name (responses-list earlier-responses user-response))))))
(define (visit-doctor name)
(write-line (list 'hello name))
(write-line '(what seems to be the trouble?))
(doctor-driver-loop name initial-earlier-response))