gpt4 book ai didi

scheme - 为什么将语法分析与执行分开?

转载 作者:行者123 更新时间:2023-12-02 02:18:10 26 4
gpt4 key购买 nike

在 SICP 第 4 章中,通过将语法分析与执行分离来修改元循环求值器,使 eval 过程如下所示:

(define (eval exp env)
((analyze exp) env))

书上说这会节省工作,因为analyze将在表达式上调用一次,而执行过程可能会被调用多次。

我的问题是,这种优化是如何进行的?它适用于递归过程调用,但其他情况又如何呢?求值器逐个求值表达式,即使它们具有相同的形式,仍会在每个表达式上调用 eval

最佳答案

您需要了解几件事:(a) analyze 函数只对每个表达式执行一次,(b) analyze 之外没有扫描表达式的代码语法,(c) analyze 返回的函数不会调用自身,因此运行该函数永远不会导致对语法的任何进一步扫描,(d) 这与调用函数的常见评估函数不同两次意味着它的语法被扫描两次。

顺便说一句,analyze 的一个更好的名字是 compile ——它确实将输入语言 (sexprs) 翻译成目标语言(一个函数,充当机器代码在这里)。

关于scheme - 为什么将语法分析与执行分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com