@ khinsen и @mikera ответили на вопрос так хорошо, что вряд ли можно было сделать какие-либо дополнительные комментарии, но я думаю, что они пропустили одно очко (или я не смог найти его в их комментариях).
В Clojure макросы являются частью языка. Используйте их или нет, но они есть. На самом деле у вас часто не будет иного выбора, кроме как использовать их, поскольку они делают ваши приложения более идиоматическими (это особенность профессионального использования любого языка). Они позволяют предварительно обрабатывать структуры данных, которые составляют приложение. Они сродни другим языковым конструкциям в том смысле, что они включены независимо от ваших потребностей.
В отличие от макросов, монады не являются частью Clojure. Они построены с использованием конструкций языка, а именно макросов. Они не включены во время выполнения, если вы не настаиваете на том, чтобы они были там. Для меня монады - это шаблоны проектирования для составления вычислений, и поэтому они похожи на другие шаблоны проектирования, с которыми вы, возможно, знакомы. Вы используете шаблоны проектирования для разработки модульных и связных приложений, и будь то монады, макросы или любые другие языковые конструкции, вы должны знать, что они существуют, и работать с ними для вашего блага.
Что касается вашего вопроса, макросы работают еще до того, как появятся монады. Макросы работают на этапе компиляции - они изменяют структуры данных на другие структуры данных. Монады - это шаблон дизайна для составления вычислений. В этом разница. В Clojure монады пишутся с использованием макросов (чтобы облегчить их использование), и поэтому люди, как правило, говорят, что вы можете делать с монадами, которых вы легко можете достичь с помощью макросов. Это верно, поскольку это происходит от дизайна монад в Clojure, но то же самое можно сказать и о самих макросах. Вам не нужно писать новые большую часть времени, и первое правило макроклуба - вообще не писать их , но все же они являются частью языка, и вы должны очень хорошо знают свои приложения.
См. Как программисты Clojure используют макросы? для более подробного обсуждения макросов.