У меня проблема, когда я использую макросы в clojure. Вот что я пытаюсь сделать.Clojure: ошибка в макро. «Нет такого var»
(defmacro working-example []
'(+ foo 1))
(defn working-function [foo]
(working-example))
(working-function 2) ; => 3
(defmacro broken-example [bar]
`(+ foo ~bar))
(defn broken-function [foo]
(broken-example 1)) ; => I get error here.
(broken-function 2) ; Should be 3.
Я хочу, чтобы макрос сломанного примера заменял текст так же, как рабочий пример. Почему он не работает и как мне заставить его работать?
«Я знаю, что есть способ предотвращения обратного апострофа в найдите символ в пространстве имен "-' \ '(+ ~ 'foo 2)' –
О, спасибо, А. Вебб. Я уточню сообщение для полноты. –