Subject: bug#76132: Clojure-style auto-gensyms for macros

From: Richard Stallman <[email-masked]>
Date: Wed, 12 Feb 2025 05:41:25 -0500

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

      > (defmacro my-foo (exp)
      >   (with-uninterned-symbols
      >    `(let ((x$ 6))
      >       (+ x$ ,exp))))

with-uninterned-symbols does not seem to exist in my checkout.
Is it new?  Proposed?

I can guess from the example what it does.  It is terribly un-Lispy.
Let's use this syntax instead:

   (with-uninterned-symbols (x)
     `(let ((,x 6))
        (+ ,x ,exp)))

It adds just one list of variables to the overall syntactic complexity
of the construct when used, and it adds nothing to the syntax of Lipp.

We could use the name `with-gensyms', a shorter name.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)