Предположим, следующий код
(defmacro sdef [sname]
`(def ~sname 3))
(defmacro sinc [sname]
(inc ... we want to access sname's value here...))
В ClojureScript мы использовали бы его следующим образом
(sdef sfoo)
(sinc sfoo) ; => 4
В нашем случае обязательно, чтобы sinc
оценивалось во время компиляции.
Нам удалось добиться этого в Clojure, используя resolve
, который не работал в ClojureScript.Нам известно, что, особенно в ClojureScript, оценка макросов строго отделена от выполнения кода ClojureScript.Однако есть ли способ достичь вышеизложенного?