Re: s7 suggestion Lassi Kortela 29 Oct 2019 16:32 UTC

>> (with-let (unlet) ...) goes underneath the global environment, so to
>> speak,
>> giving you the built-in startup values, so even set! at the top level
>> won't
>> affect it.  There are, of course, many other choices.  I added some more
>> examples to s7.html this morning.
>
> Aha, so instead of temporarily "unwinding" the stack of current lexical
> environments, it *adds* a copy of the default environment as the
> innermost environment. Brilliant.

To be pedantic, for full hygiene it should probably get only the
`lambda*` binding used by the macro from the default environment, and
preserve all lexical bindings in `body` even if the user overrode some
standard names. Including preserving the user's binding of `lambda*`
inside `body`. But I'm not sure whether this has any practical relevance
anymore.