Я застрял на по-видимому основной вещи. У меня есть пространство имен, где у меня есть несколько определений:Указать символ в макросе
(ns my-namespace)
(def my-definition "HELLO")
(def my-definition2 "HI")
Теперь я хочу использовать ценность в Варс my-namespace
в макрос, но я хочу, чтобы получить символы динамически. Например,
(defmacro my-macro [n]
(-> "my-namespace/my-definition" symbol resolve var-get))
Получение символа таким образом, работает в функции (до тех пор, как загружается пространство имен), но не в макро.
В макросе символ не может быть разрешен. Я пробовал процитировать и делать незаметные, но все равно не работает.
Возможно ли в макросе использовать значение символа, созданного таким образом? Если да, то как?
'мой-namespace' должен быть загружен до' мой-macro' расширяется. Это так? – OlegTheCat
Добавление '(require [my-namespace: refer: all])' к объявлению пространства имен макросов разрешило проблему. Если вы опубликуете ответ, вы можете набрать несколько очков @OlegTheCat, если вам это интересно. –