# Share your favourite macros that you've written!

**URL:** <https://racket.discourse.group/t/share-your-favourite-macros-that-youve-written/2017>\
**Category:** General\
**Tags:** macro\
**Created:** [June 16, 2023, 3:14am UTC](https://racket.discourse.group/t/share-your-favourite-macros-that-youve-written/2017 "2023-06-16T03:14:39Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![Laurent.O](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/laurent.o/32/18_2.png) [@Laurent.O](https://racket.discourse.group/u/Laurent.O)\
**Post date:** [July 5, 2023, 1:30pm UTC](https://racket.discourse.group/t/share-your-favourite-macros-that-youve-written/2017/3 "2023-07-05T13:30:40Z")

</div>

Another one-liner to define a very simple hygienic threading macro:

```scheme
(define-syntax-parse-rule (with it:id body:expr ...)
  (let* ([it body] ...) it))

```

Usage example:

```scheme
(with it "Hello World"
      (string-downcase it)
      (string-split it)
      (map string->list it)
      (displayln it))
; displays: ((h e l l o) (w o r l d))

```

---

_[View the full topic](https://racket.discourse.group/t/share-your-favourite-macros-that-youve-written/2017)._
