You also picked as your example the one thing unhygienic macros are good at. Even in arc.arc, most macros start with (w/uniq (let boilerplate like:
(mac or args (and args (w/uniq g `(let ,g ,(car args) (if ,g ,g (or ,@(cdr args)))))))
[1]: http://docs.racket-lang.org/guide/pattern-macros.html [2]: http://docs.racket-lang.org/syntax/stxparse.html
You also picked as your example the one thing unhygienic macros are good at. Even in arc.arc, most macros start with (w/uniq (let boilerplate like:
In my code breaking hygiene is the exception, not the common case, and my Racket macros are usually shorter than the equivalent arc macros.