Prendi la seguente macro di esempio, definita in macro.el.
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
E prendere la seguente funzione, definita in un file diverso , function.el.
(defun some-function ()
(some-macro (do-something)))
Quando function.elviene compilato byte, verrà some-variableassociato con associazione lessicale o dinamica?
Capisco che dipende dall'utilizzo del file -*- lexical-binding: t; -*-, quindi la mia domanda riguarda specificamente le seguenti situazioni:
- Se
function.elutilizza l'associazione lessicale, mamacro.elnon lo fa. - Se
macro.elutilizza l'associazione lessicale, mafunction.elnon lo fa.
Fa differenza se some-varè stato dichiarato globale (con un defvar) all'interno function.el? Se lo fa, sono particolarmente interessato al caso in cui non è così .