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’.


Reply via email to