Me doy cuenta de que la primera regla de Macro Club es No usar macros, por lo que la siguiente pregunta es más un ejercicio para aprender Clojure que cualquier otra cosa (Me doy cuenta de que esto no es necesariamente el mejor use de macros).Ayúdame a escribir una macro Clojure que agrega metadatos automáticamente a una definición de función
Quiero escribir una macro simple que actúa como un contenedor alrededor de una macro normal (defn)
y termina añadiendo algunos metadatos a la función definida. Así que me gustaría tener algo como esto:
(defn-plus f [x] (inc x))
... ampliar a algo como esto:
(defn #^{:special-metadata :fixed-value} f [x] (inc x))
En principio esto no parece tan difícil para mí, pero me Tengo problemas para ver los detalles de obtener el [args]
y otros formularios en la función definida para que sean analizados correctamente.
Como beneficio adicional, si es posible me gustaría que la macro sea capaz de manejar todas las formas dispares de definición (es decir, con o sin documentos, definiciones de aria múltiple, etc.). Vi algunas cosas en el paquete clojure-contrib/def
que parecían posiblemente útiles, pero era difícil encontrar el código de muestra que las usaba.
Good intro ... props principales para eso. – Kekoa
¿Por qué no utilizar macros? ¿Estás pensando en el preprocesador C? – Svante