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