# Single-use macros

**URL:** <https://racket.discourse.group/t/single-use-macros/3022>\
**Category:** General\
**Tags:** macro\
**Created:** [July 13, 2024, 11:05am UTC](https://racket.discourse.group/t/single-use-macros/3022 "2024-07-13T11:05:16Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![qnc](https://avatars.discourse-cdn.com/v4/letter/q/e5b9ba/32.png) [@qnc](https://racket.discourse.group/u/qnc)\
**Post date:** [July 13, 2024, 11:05am UTC](https://racket.discourse.group/t/single-use-macros/3022/1 "2024-07-13T11:05:16Z")

</div>

In addition to code-reuse, macros also come in handy for ad-hoc templating. I often have to repeat the following pattern:

```scheme
(define-syntax (xxx stx)
  #`(...
     #,@(for/list ...)
     ...)

xxx

```

and never use `xxx` again.  
This works, but does not seem to be not a neat solution. Is there a better way to do it?

---

<div class="post-metadata">

**Author:** ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)\
**Post date:** [July 13, 2024, 11:22am UTC](https://racket.discourse.group/t/single-use-macros/3022/2 "2024-07-13T11:22:34Z")

</div>

Maybe you could use `let-syntax`?

---

<div class="post-metadata">

**Author:** ![qnc](https://avatars.discourse-cdn.com/v4/letter/q/e5b9ba/32.png) [@qnc](https://racket.discourse.group/u/qnc)\
**Post date:** [July 13, 2024, 11:42am UTC](https://racket.discourse.group/t/single-use-macros/3022/3 "2024-07-13T11:42:31Z")

</div>

I want something like this:

```scheme
(do-macro
  #'(...))

```

Then I won't need a temporary name. Is this built into the lamguage, or could be abstracted with a macro?

---

<div class="post-metadata">

**Author:** ![sorawee](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@sorawee](https://racket.discourse.group/u/sorawee)\
**Post date:** [July 13, 2024, 1:18pm UTC](https://racket.discourse.group/t/single-use-macros/3022/4 "2024-07-13T13:18:01Z")

</div>

See [`begin/inject-syntax`](https://docs.racket-lang.org/scramble/index.html#%28form._%28%28lib._scramble%2Finject-syntax..rkt%29._begin%2Finject-syntax%29%29) in Scramble.
