Пошаговое вычисление
В системе имеется функция "STEP", обеспечивающая пошаговую интерпретацию сложных выражений.
Унарная функция "STEP" выполняет пошаговую интерпретацию своего аргумента. Ее работа начинается с приглашения выбрать действие по управлению интерпретацией (см. таблицу):
[2]> (step (cons (car '(a . b)) 'd )) step 1 --> (CONS (CAR '(A . B)) 'D ) Step 1 [3]>
Help | :h (or ?) | this command list |
Полный список команд | ||
Error | :e | Print the recent Error Message |
Вывод последнего сообщения об ошибке | ||
Continue | :c | continue evaluation |
Продолжение вычислений | ||
Step | :s | step into form: evaluate this form in single step mode |
Продвижение к внутреннему подвыражению | ||
Next | :n | step over form: evaluate this form at once |
Вычисление данной формы сразу, полностью |
По действию "step" выбирается вычисление первого аргумента функции "CONS":
Step 1 [2]> (step (cons (car '(a . b)) 'd )) Step 1 --> (CONS (CAR '(A . B)) 'D ) Step 1 [3]> step Step 2 --> (CAR '(A . B)) Step 2 [4]>
Это же действие "step" теперь можно выбирать с помощью стрелки вверх:
Step 1 [2]> (step (cons (car '(a . b)) 'd)) Step 1 --> (CONS (CAR '(A . B)) 'D) Step 1 [3]> step Step 2 --> (CAR '(A . B)) Step 2 [4]> step1) Step 3 --> '(A . B) Step 3 [5]>
Теперь шаг за шагом смотрим как интерпретатор перебирает подвыражения и получает их значения:
(step (cons (car '(a . b)) 'd )) step 1 --> (CONS (CAR '(A . B)) 'D) Step 1 [15]> step step 2 --> (CAR '(A . B)) Step 2 [16]> step step 3 --> '(A . B) Step 3 [17]> step
step 3 ==> value: (A . B) step 2 ==> value: A step 2 --> 'D Step 2 [18]> step
step 2 ==> value: D step 1 ==> value: (A . D) (A . D) Step 1 [14]>