【发布时间】:2009-06-03 17:32:45
【问题描述】:
我想写一个程序来在Scheme中找到二次方程的根。我将 LET 用于某些绑定。
(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)))))
我用4ac 定义了判别式,因为我不想要(* 4 a c)。即使我定义了(4ac (* 4 a c)),它还是给了我这个错误:
展开:模块中的未绑定标识符:
4ac。
我的问题是如何让评估(什么顺序)?如果我想要4ac 在我的let 中,我应该写另一个内部let 吗?有没有更好的方法来做到这一点?
【问题讨论】:
-
这是一个来自 SICP Lecture/Book 的例子!