2013-04-01 5 views
6

È possibile avere una parola chiave qualificata all'interno di una risoluzione macro nello spazio dei nomi del chiamante? Per esempio:Clojure: parola chiave qualificata all'interno di una macro che si risolve nello spazio dei nomi del chiamante?

(ns a) 
(defmacro m [] `(do ::k)) 

E in un altro spazio dei nomi:

(ns b) 
(use 'a) 
(m) 

In questo esempio, (m) delibera di :a/k (lo spazio dei nomi in cui è definito la macro). Mi chiedo se esiste un modo per risolverlo su :b/k (lo spazio dei nomi in cui la macro è chiamata).

risposta

5

(defmacro m [] (keyword (name (ns-name *ns*)) "k"))

Problemi correlati