scheme - 评估组合以递归处理 (+ 1 2)

标签 scheme lisp evaluation sicp expression-evaluation

我正在看SICP的第一章

1.1.3 Evaluating Combinations

它指出

To evaluate a combination, do the following: 

1.  Evaluate the subexpressions of the combination.

2.  Apply the procedure that is the value of the leftmost subexpression (the operator) to the arguments that are the values of the other subexpressions (the operands). 

假设一个组合 (+ 1 2)

根据上述算法,
首先是评估(检索)+ 1 和 2)
第二种是对1应用+(存储中间状态)
第三个是再次评估(检索)中间状态和2。
第四是将中间状态应用到2。

是吗?
+1 的中间状态是什么?

最佳答案

表达式 (+ 1 2) 是由原始表达式组成的组合:+12.

第一步是计算所有子表达式。在这种情况下,它们分别是执行数字求和的运算符,以及分别对应于数字 1 和 2 的数字。

所以您有一个运算符和两个数值。第二步说你必须将运算符(最左边的值)应用于这两个数字:换句话说,你必须将求和运算符应用于 1 和 2,以便获得数字 3。过程终止。

请注意,此计算中没有中间状态。

关于scheme - 评估组合以递归处理 (+ 1 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58562817/

相关文章:

lambda - Lisp 方案 : let to lambda

machine-learning - 计算 FastText 分类器模型的混淆矩阵

java - 在 java 中使用 alpha beta 修剪的井字游戏

scheme - 用MIT方案绘制图形

scheme - Racket 查找列表之间的共享元素

lisp - 请批评我的 Lisp

lisp - Elisp 中各种形式的循环和迭代

python - Python 逻辑表达式中的奇怪转换

scheme - 如何在方案中生成 lambda 列表?

lisp - Scriptfu 没有以正确的顺序执行,为什么?