[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bug in syncase
From: |
Neil Jerram |
Subject: |
Re: bug in syncase |
Date: |
04 Dec 2002 20:54:38 +0000 |
User-agent: |
Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 |
>>>>> "Carl" == Carl R Witty <address@hidden> writes:
Carl> Emacs does not do memoization during eval; macros are
Carl> re-evaluated every time they are encountered. However, if
Carl> you byte-compile a function (typically by byte-compiling an
Carl> entire file at install time, although it's also possible to
Carl> byte-compile an individual function at run time), macros are
Carl> expanded during the byte-compilation process.
Many thanks for this.
Carl> This means that Emacs Lisp code which is to run correctly
Carl> both interpreted and compiled must be insensitive to when or
Carl> how often macro expansion is done; such code -- which
Carl> includes virtually all distributed Emacs Lisp code, I would
Carl> think -- would also work if macro expansion were memoized.
A persuasive constraint to have ... except only for the interactive
development angle ...
Carl> The interactive development process would be different,
Carl> though; for a complete clone of Emacs, including the
Carl> development process, you would want to have an eval that
Carl> does no memoization and some sort of separate compilation
Carl> phase.
I don't quite understand. By `interactive development process', do
you mean what a user does with `C-x C-e', or something more specific
to the core Emacs developers?
If the former, I don't see how you reach your conclusion. What if you
redefine a macro that was in use by a byte-compiled function? It
seems to me that what you need to handle this scenario is a
recompilation protocol. How does a non-memoizing eval and separate
compilation help?
Neil