Ich versuche, eine Funktion zu erstellen, die Liste als eine Eingabe nimmt und eine Funktion ausgibt. Ich bin verwirrt mit den Rekursionsaufrufen, die gemacht werden müssen, um durch die Liste zu gehen.Funktion im Schema, die Liste als Eingabe nimmt und eine Funktion ausgibt
(define S (buildfunc '(1 0 -2 -3 4)))
Eg: eine Funktion erzeugt werden würde, die als Eingabe
-
nimmt fügt 1 bis es
- Quadrate das Ergebnis
- das Quadrat von 2 multipliziert,
- multipliziert das letzte Ergebnis mit 3,
- und fügt 4 hinzu
If (S 4), ist die Ausgabefunktion das Ergebnis wäre:
4 + 1 = 5 -> 25 -> 25 * 2 = 50 -> 50 * 3 = 150 -> 150 + 4 ==> 154
Der Code, die ich bin derzeit mit ist:
(define (s n) (lambda (L) (buildfunc n L)))
(define (buildfunc n L)
(cond
((null? L) '())
((equal? (car L) 0) (* n n))
((positive? (car L)) (+ n (car L)))
((negative? (car L)) (* n (car L)))
(else
(buildfunc n (cdr L)))))
(define C (s 3))
(C '(1 0 -2 -3 4))
Gibt es eine Möglichkeit, die Funktion ohne 'foldl' zu schreiben? Ich bin neu im Schema und versuche zu verstehen, wie ich die Liste durchquere. – Siva