Я думаю, что глупо задавать вопрос, что можно добавить, что вы должны спросить, что вы не можете добавить.Макросы позволяют вам подключиться к компилятору, что означает, что вы можете делать почти все.
В данный момент вы не можете добавить свой собственный синтаксис к языку.У Clojure нет читателя, расширяемого пользователем, это означает, что у вас нет макросов читателя (http://dorophone.blogspot.com/2008/03/common-lisp-reader-macros-simple.html).) Это не из-за технической проблемы, а скорее из-за решения Rich Hickey (создателя Clojure).
Чего вы не можете сделать, так это реализовать функции, которые требуют поддержки виртуальных машин, например, добавить семантику хвостового вызова или goto
.
Если вы хотите увидеть, что сделано, то: Есть ликакие-либо DSL Clojure?
Обратите внимание, что этот список не обновлен на 100%.
Редактировать:
Поскольку вы, кажется, взяли пример сопоставления с образцом (это действительно хороший пример силы макросов) вы действительно должны взглянуть на библиотеку match
. Это, вероятно, лучшая самая быстрая библиотека сопоставления с образцом в Clojure. http://vimeo.com/27860102