上下文
我正在使用Clojurescript,我试图在编译时定义很多函数来包装Javascript API。我的代码适用于较低级别的编译器优化。是的,当我使用:optimizations :advanced
Clojurescript编译器标志时,编译器会抛出警告:Use of undeclared Var my.namespace/fname
并且我的代码在运行时不起作用(找不到某些损坏的符号)。
以下是此问题的最低示例:
(defmacro create-a-function [l]
`(defn ~l [o#] (inc o#)))
(create-a-function fname)
;; Below inside another function
(defn fname-clone [k]
(fname k))
我在编译时使用宏fname
决定一个名为create-a-function
的函数。当我尝试在运行时调用该函数时,它会失败。
我尝试了什么?
(declare fname)
,它在编译时删除警告但在运行时因同样的错误而失败。我的问题
如何使用高级优化级别使这种代码工作?