В elisp let, как вы ссылаетесь на переменную, связанную с тем же, что и привязка другой переменной?

(let ((a 1) (b (+ a 1)))
  (message a))

Это вызывает ошибку

Debugger entered--Lisp error: (void-variable a)

Какой канонический способ сделать это?

Ответ 1

Канонический способ заключается в использовании let* (также обратите внимание, что я добавил строку формата %s в форму message)

(let* ((a 1) (b (+ a 1)))
  (message "%s" a))

Функция let* позволяет ссылаться на другие переменные, которые ранее были определены.