Estoy intentando escribir una macro que construye un middleware similar al que se usa en compojure.Macro Clojure que crea una función de orden superior desde una función
quiero ser capaz de llamar a:
(def-middleware plus-two [x]
(+ 2 x))
Y tienen el resultado se parece a:
(defn plus-two [f]
(fn [x]
(f (+ 2 x)))
Tengo esta muy lejos de guías de lectura en línea pero no está funcionando para mí:
(defmacro def-middleware [fn-name args & body]
'(defn ~fn-name [f]
(fn ~args
(f [email protected]))))
Cualquier ayuda o un puntero a una mejor guía de macro escritura sería genial, gracias.
¿Cómo no funciona para usted? –
CompilerException java.lang.RuntimeException: primer argumento para def debe ser un símbolo, compilando: (NO_SOURCE_PATH: 33) – jdoig
usa la marca de retroceso, no la comilla simple – Alex