Учитывая эту ситуацию:
(defmacro mac1 ...)
(defun func1 ()
(mac1 ...))
Переопределение mac1
в живой среде не повлияет на func1
, пока он сам не будет перекомпилирован.
Есть ли способ заставить emacs или lisp автоматически перекомпилировать func1
всякий раз, когда перекомпилируется mac1
?
Что-то вроде этого в источнике было бы приемлемо:
(watch
(defmacro mac1 ...))
(on-signal (mac1)
(defun func1 ...))
Не так сложно реализовать, но я бы предпочел не изобретать колесо.
cl
, вы можете спрятать исходный код функции как свойство имени ее символа в оболочке вокругdefun
и иметь вторую оболочку вокругdefmacro
для просмотраwho-macroexpands
и повторения над этими спрятанными источниками. Или простоslime-compile-and-load-file
, когда вы теряете представление о том, что могли сделать ваши изменения макроса. - person BRPocock   schedule 21.06.2016