【问题标题】:Lexical vs dynamic scoping in terms of SICP's Environment Model of Evaluation就 SICP 的评估环境模型而言,词法与动态范围
【发布时间】:2012-09-27 15:45:01
【问题描述】:

在SICP的Section 3.2.2中执行下面这段代码

(define (square x)
  (* x x))
(define (sum-of-squares x y)
  (+ (square x) (square y)))
(define (f a)
  (sum-of-squares (+ a 1) (* a 2)))

(f 5)

this diagram解释。

每次应用函数时,都会创建一个新框架(由E1E4 标记),它表示符号和值之间的一组绑定。当一个符号未绑定在框架中时,将查询该框架的封闭环境以获取该特定符号的绑定。

这个图的有趣之处在于,所有用E 标记的帧都包含在全局环境中。文中解释说这是因为函数是在全局环境中定义的,但没有详细说明问题:

注意square 创建的每个帧都指向全局环境,因为这是square 过程对象指示的环境。

如果框架包含在调用函数的环境中,比如 E3 包含在 E2 中,而 E2 又包含在 E1 中,那么这将是动态范围语言如何实现的有效模型作品?另外,图中的框架是否具有相同的“父”环境,因为 Scheme 是词法范围的?

【问题讨论】:

    标签: scheme sicp lexical-scope dynamic-scope


    【解决方案1】:

    这两个问题的答案都是。 SICP 的那一章解释了词法范围,但没有实际使用该术语。按照您的描述更改评估机制将创建一个动态范围的模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-15
      • 2018-07-28
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多