Я пытаюсь написать макрос, который создает промежуточное ПО, похожее на то, которое используется в compojure.
Я хочу иметь возможность позвонить:
(def-middleware plus-two [x]
(+ 2 x))
И чтобы результат выглядел так:
(defn plus-two [f]
(fn [x]
(f (+ 2 x)))
Я так далек от чтения онлайн-руководств, но это не работает для меня:
(defmacro def-middleware [fn-name args & body]
'(defn ~fn-name [f]
(fn ~args
(f ~@body))))
Любая помощь или указатель на лучшее руководство по написанию макросов было бы здорово, спасибо.