代码之家  ›  专栏  ›  技术社区  ›  Gradient

如何在sicp的evaluator中标记原始过程(第4章)?

  •  0
  • Gradient  · 技术社区  · 6 年前

    我正在读SICP的第四章。在 eval 程序,有一个程序 application 是的。此过程检查表达式是否用符号标记 'primitive 'procedure 是的。

    我能看到符号在哪里 '程序 已添加。(当计算lambda表达式时)。

    我找不到标签在哪里 '原始 是否已添加?显然,当我向评估者提供一个程序时 (+ 1 2) 而不是 ('primitive + 1 2) 是的。我猜 '原始 标签被添加到某个地方(比如 '程序 ),但我找不到地方。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Óscar López    6 年前

    看看 primitive-procedure-objects 程序,这就是 'primitive 标记被添加到 primitive-procedures 列表,其中包含可供解释器使用的基本操作。

    反过来, 基本过程对象 是在里面叫的 setup-environment ,用于为解释器创建初始环境。

    当计算表达式时,例如 (+ 1 2) ,在案例分析中,评估者只需一路向下 eval ,匹配 application? 谓词,它调用 apply 然后 (eval (operator exp) env) 在表达式的第一个元素上。反过来,这个匹配 variable? 在案例分析中, lookup-variable-value ,它返回一个过程,我们用 '原始 在里面 安装环境 是的。呼!