2017-11-04 4 views
-1

Ich versuche, eine forAll-Prozedur zu schreiben, die zwei Argumente benötigt: die Start- und Endwerte einer Reihe. Die resultierende Closure erwartet ebenfalls zwei Argumente: eine Operation, die auf alle Elemente in der Reihe angewendet wird, sowie einen Anfangswert.Schreiben einer forAll-Prozedur, die zwei Argumente akzeptiert: die Anfangs- und Endwerte einer Reihe und wendet eine bestimmte Prozedur auf diese Reihe an

Das ist, was ich habe und ich vermisse etwas oder ich verstehe das Konzept hinter den Schließungen nicht.

(define (forAll n m) 
    (if (>= n m) '() 
    (forAll (+ n 1) m)) 

(lambda (op start) (op start n m)) 
     ) 

Antwort

0

Dies sieht wie ein "kombinieren bestehende Funktionen in neue" Übung.
Beginnen Sie mit dem Schreiben einer Funktion, die die Liste der Zahlen generiert, wenn Sie das nicht bereits getan haben.
Verwenden Sie das, um diese Funktion zu machen.
Überprüfen Sie, was Sie in letzter Zeit gelernt haben, und sehen Sie, ob Sie bereits eine Funktion haben, die ähnlich wie die Schließung funktioniert.

Was werden Sie am Ende wird wahrscheinlich so aussehen:

(define (forAll n m) 
    (lambda (op start) 
     (... code that builds a list and computes the result ...))) 
+0

Das nicht wirklich helfen oder etwas erklären –

Verwandte Themen