Оцените комбинацию для рекурсивного решения (+ 1 2) - PullRequest
0 голосов
/ 25 октября 2019

Я читаю первую главу SICP

1.1.3 Оценка комбинаций

В нем говорится, что

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?

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Выражение (+ 1 2) представляет собой комбинацию, составленную из примитивных выражений: +, 1 и 2.

На первом шаге указывается оценить все подвыражения. В этом случае они, соответственно, оператор, который выполняет сумму чисел и чисел, соответствующих цифрам 1 и 2. соответственно.

Таким образом, у вас есть оператор и два числовых значения. Второй шаг говорит, что вы должны применить оператор (крайнее левое значение) к двум числам: другими словами, вы должны применить оператор сумм к 1 и 2, чтобы получить число 3. И процесс завершается.

Обратите внимание, что в этом вычислении нет промежуточных состояний.

1 голос
/ 25 октября 2019

Второй - применить + к 1

Нет, второй шаг - вызвать функцию + со значениями аргументов 1 и 2.

Этозатем вычисляет сумму 1 и 2 и возвращает 3.

...