Візьмемо наступний приклад макросу, визначеного в macro.el.
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
І візьміть наступну функцію, певну в іншому файлі , function.el.
(defun some-function ()
(some-macro (do-something)))
Коли function.elбайт складений, буде some-variableпов'язаний під лексичним чи динамічним зв'язуванням?
Я розумію, це залежить від того, чи використовується файл -*- lexical-binding: t; -*-, тому моє запитання стосується конкретних ситуацій:
- Якщо
function.elвикористовується лексичне зв’язування, алеmacro.elце не так. - Якщо
macro.elвикористовується лексичне зв’язування, алеfunction.elце не так.
Чи має значення це, якщо some-varвін був оголошений глобальним (з дефваром) всередині function.el? Якщо це так, мене спеціально цікавить випадок, коли цього не сталося .