Wie zu verwenden Zähler im Schema

Ich versuche ein Programm zu schreiben, wo ein Arzt sieht nur 5 Patienten und dann das Programm beendet. Jetzt ist es nicht zu Ende und es hält Fragen für den nächsten Patienten. Ignorieren Sie die anderen in der Arzt-Treiber-loop-Verfahren. Ich hinzufügen, um zu zählen, sich an diesem Verfahren, aber ich denke, es geht zurück auf null, jedes mal. Wie kann ich dieses Problem beheben?

(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))
  • Du bist nie zu aktualisieren count, so dass jedes mal, wenn Sie anrufen new-patient Sie vorbei sind 1 als argument. doctor-driver-loop nehmen sollten der Graf als ein argument, und pass (+ 1 count) wenn es eine Rekursion.
InformationsquelleAutor tlauer | 2013-02-28
Schreibe einen Kommentar