estaba navegando por la fuente clojure y me sorprendió por la forma en la que la macro se define:clojure cuando macro
user=> (source when)
(defmacro when
"Evaluates test. If logical true, evaluates body in an implicit do."
{:added "1.0"}
[test & body]
(list 'if test (cons 'do body)))
nil
user=>
que estaba esperando a ser escrito algo como esto en su lugar:
(defmacro when [test & body] `(if ~test (do [email protected])))
¿Por qué se escribió la macro actual de esta manera menos habitual?
Me gustaría tener más arriba-votos a dar este . –
La línea 680 parece ser la macro defmulti. Y la cita de sintaxis (supongo) es una macro de lector. ¿Puede explicar exactamente qué función/macro se requiere para la cita de sintaxis? – Kevin
Kevin, ¿por qué no sigues los enlaces detrás de esos números de línea? No hay 'defmulti' en la línea 682 o cerca de ella, por lo que probablemente esté buscando alguna otra versión de este archivo. En cuanto a lo que se requiere para la cita de sintaxis, es simple: ** todo lo definido anteriormente en la línea 682 ** en esta versión particular del archivo. –