【发布时间】:2012-03-13 20:32:55
【问题描述】:
我已经编写了一个程序来计算 3 个数字中的第一个和第二个最大的平方和,如下所示...
(define (max2of3 x y z)
(let ((first (max x y))
(second (max first z)))
(+ (* first first) (* second second))))
但是当我执行它时出现错误...
[2](加载“max2of3”) 好的 [3] (max2of3 1 2 3)
[遇到虚拟机错误!] 词法环境中未定义变量 第一
虽然我确实理解错误是由于解释器无法识别变量“FIRST”而引起的,但我不明白为什么?
根据 SICP 的定义:
let 表达式的第一部分是名称-表达式对的列表。当评估 let 时,每个 name 与相应表达式的值相关联。 let 的主体被评估为 这些名称绑定为局部变量
这是否意味着'let'构造在声明块中声明了一个变量?
谢谢。
【问题讨论】:
标签: scheme