В 4.1.3 Структуры данных оценщика SICP гласят:
То, что программы пользователя являются данными оценщика, не должно быть источником путаницы. Фактически, иногда удобно игнорировать это различие и дать пользователю возможность явно оценивать объект данных как выражение Lisp, делая eval доступным для использования в программах. Многие диалекты Lisp предоставляют примитивную eval процедуру, которая принимает в качестве аргументов выражение и среду и оценивает выражение относительно среды.
Затем экспериментируйте с
Chez Scheme Version 9.5
Copyright 1984-2017 Cisco Systems, Inc.
> (define a 5)
> (define b 6)
> (eval '(* a b))
30
Я думаю, что результат не имеет смысла, поскольку он не только применим, но и применим.
Как я понял из дальнейшего содержания, я предсказываю, что результат должен быть
> (eval '(* a b))
'(* (5 6))
Затем примените * к списку значений (5 6).
Eval производит значение аргументов и процедур, которые будут применяться, а не конечный результат.
Я не прав с пониманием eval?