在 SICP 第 1.1.5 部分程序应用的替代模型我很好奇评估的应用顺序。
我理解应用顺序在应用外部过程之前评估参数。
我的问题是它通过参数的顺序是什么?
例如,
(+ (+ 2 1) (/ 10 2))
(+ 2 1)
或 (/10 2)
会先被计算吗?
最佳答案
我假设您仍在阅读本书的第 1 章。请放心,本书的其余部分将向您更详细地解释这一点。现在,您可能对此感兴趣 footnote from section 3.2.1 The Rules for Evaluation :
... this order [left to right or right to left] should always be considered to be an implementation detail, and one should never write programs that depend on some particular order. For instance, a sophisticated compiler might optimize a program by varying the order in which subexpressions are evaluated.
后面的章节会越来越详细地讨论这个问题。例如:
- Exercise 3.8 : "定义一个简单的过程
f
,如果(+ (f 0) (f 1))
的参数将返回0
+
从左到右求值,但如果参数从右到左求值,则返回1
" - Exercise 4.1 - 更改元循环评估器中的评估顺序。
- Section 5.4.1 The Core of the Explicit-Control Evaluator (评估过程应用程序小节)- 展示了如何在显式控制评估器中实现过程应用程序。在这里您可以清楚地看到参数评估循环的细节如何确定评估顺序。
关于scheme - 对于应用顺序,参数的评估顺序是什么?从左到右还是从右到左?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59859451/