+
это просто функция, так что вы можете, ваше пространство имен, исключите ссылку на clojure.core/+, а затем определите свою собственную функцию добавления в этом пространстве имен.
Clojure не предлагает общий крючок для концепции применения функций в этом пространстве имен. Что делают инструменты разработки, так это чтение пространства имен для всех символов, содержащих функции, а затем привязать их к функции обертки, которая выполняет трассировку. Это влияет только на функции, которые существуют в пространстве имен в то время, когда это происходит, поэтому оно менее общее, чем то, о чем вы просите.
см. clojure.tools.trace и Robert Hooke для получения более подробных примеров.
Вы не указываете отношение между макросом 'app' и формой' (+ 2 2) '. Пожалуйста, уточните, что именно вы пытаетесь сделать. –
Я бы хотел, чтобы макрос 'app' изменил поведение каждого приложения-функции в пространстве имен. Включая '(+ 2 2)', а также '(+ 1 2 3)' и '(f x)' для любой функции 'f'. –