FYI - ответ dnolen будет работать только для буквенных строк, а не для строк в переменных def или let.
(defmacro defn-with-str [строковые аргументы и тело]
`(defn ~ (символьная строка) ~ args ~ @ body))
(def hisym "привет")
(defn-with-str hisym [] (println "hi"))
Теперь у вас есть функция с именем "hisym"
(привет) -> java.lang.Exception: невозможно разрешить символ: привет в этом контексте (NO_SOURCE_FILE: 6)
(hisym) -> печатает "привет"
Чтобы избежать этого, оцените строку имени функции в макросе
(defmacro defn-with-str [string args & body]<br/>
`(defn ~(symbol (eval string)) ~args ~@body))