Diskussion:Verzögerte Evaluation und Streams

Aus ProgrammingWiki

Sprachelemente

Ergänzung und Korrektur in der Tabelle zu den stream-Sprachelementen:

ProzedurParameterBeschreibung
stream-cdrstreamanalog zu cdr
stream-conselement streamanalog zu cons

Grenzwert

Vorschlag zur Aufgabenstellung Grenzwert:

Schreiben Sie eine Prozedur grenzwert, die den Grenzwert einer Zahlenfolge bestimmt. Diese soll den Grenzwert g einer als Stream repräsentierten Zahlenfolge stm zurückgeben, wenn ab einem gewissen Index i sämtliche Folgenglieder in einer hinreichend kleinen \varepsilon-Umgebung (eps) von g liegen. Falls min Folgenglieder in dieser \varepsilon-Umgebung liegen, wird Konvergenz vermutet und das i-te Folgenglied zurückgegeben. Ist das nicht der Fall, wird die Suche nach max Folgengliedern abgebrochen und #f zurückgegeben.

Lösungsvorschlag:

(define grenzwert
  (lambda (stm eps min max)    
    (cond
      [(< max 0) #f]
      [(< min 0) (stream-car stm)]
      [(< (abs (- (stream-car stm) (stream-car (stream-cdr stm)))) eps)
       (grenzwert (stream-cdr stm) eps (- min 1) (- max 1))]
      [else
       (grenzwert (stream-cdr stm) eps min (- max 1))])))