Ich möchte ein Programm schreiben, um die Wurzeln der quadratischen Gleichung in Scheme zu finden. Ich habe LET für bestimmte Bindungen verwendet.Mit Let in Schema
(define roots-with-let
(λ (a b c)
(let ((4ac (* 4 a c))
(2a (* 2 a))
(discriminant (sqrt (- (* b b) (4ac)))))
(cons (/ (+ (- b) discriminant) 2a)
(/ (- (- b) discriminant) 2a)))))
I definiert die Diskriminante mit 4ac
da ich nicht (* 4 a c)
wollte. Auch wenn ich (4ac (* 4 a c))
definiert haben, wird es mir diesen Fehler geben:
expand: unbound identifier in module in:
4ac
.
Meine Frage ist, wie wird ausgewertet lassen (welcher Reihenfolge)? Und wenn ich 4ac
in meinem let
will, sollte ich einen anderen inneren let
schreiben? Gibt es einen besseren Weg, dies zu tun?
Dies ist ein Beispiel von SICP Lecture/Book! – Nishant