Макрос не может сделать так, чтобы перевод строки закрывал форму. А хочется.
Запись совсем маленькая. paint red blue на отдельной строке читается как (paint red blue), перевод строки закрывает форму, а # начинает комментарий. Все три правила решают, что считать токеном и где кончается форма, и reader принимает эти решения раньше, чем экспандер хоть что-то увидит. Обычный макрос внутри существующего языка работает с уже готовыми формами. Вернуться назад и поменять лексические правила вокруг себя он не может.
Значит, эти правила просятся в собственный reader. Это реально, но вместе с ним приходят инструменты и документация, которые надо поддерживать, и новичок, который спросит, почему # здесь значит не то, что обычно в Racket. Для трёх слов я наполовину убеждён, что обычные скобки выгоднее.
