Hi, Mark H Weaver <m...@netris.org> skribis:
> Because it breaks your nice equivalence. For example: > > (let ((x 1)) > (syntax-local-binding #'x)) > > is not equivalent to: > > (let ((x 1)) > (local-eval '(syntax-local-binding #'x) (the-environment))) > > Put another way: if anyone uses `syntax-local-binding' to distinguish > lexical variables from macros in some clever macro of theirs, this means > that `local-eval' is now buggy with regard to their clever macro. What about recommending against “clever macros” that use ‘syntax-local-binding’, or documenting the limitation in how ‘local-eval’ and ‘syntax-local-binding’ would interact? After all, the point of ‘local-eval’ is to provide a compatibility later with 1.8, and ‘syntax-local-binding’ didn’t exist there. Thanks, Ludo’.