Chcę napisać program, aby znaleźć korzenie równania kwadratowego na Schemacie. Użyłem LET dla niektórych powiązań.Używanie Let in Scheme
(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)))))
zdefiniowałem Wyróżnik z 4ac
ponieważ nie chciałem (* 4 a c)
. Mimo, że zostały zdefiniowane (4ac (* 4 a c))
, to daje mi ten błąd:
expand: unbound identifier in module in:
4ac
.
Moje pytanie brzmi: w jaki sposób jest oceniany niech (jakiej kolejności)? A jeśli chcę 4ac
w moim let
powinienem napisać kolejny wewnętrzny let
? Czy jest lepszy sposób to zrobić?
To jest przykład z SICP Lecture/Book! – Nishant