Clojurescript宏:在编译时使用节点api
我正在用lumo编写一个cli脚本,我想要以下宏,但是使用nodejs中的Clojurescript宏:在编译时使用节点api,clojure,clojurescript,Clojure,Clojurescript,我正在用lumo编写一个cli脚本,我想要以下宏,但是使用nodejs中的readFileSync (defmacro compile-time-slurp [path] ;; slurp is not defined in self hosted cljs (slurp path)) 这可能吗 编辑:更清楚地说,这是在自托管clojurescript中,在宏扩展时,slurp功能不可用。clojurescript宏是用Clojure语言编写的,其生命周期大致如下: jvm加载Cloj
readFileSync
(defmacro compile-time-slurp [path]
;; slurp is not defined in self hosted cljs
(slurp path))
这可能吗
编辑:更清楚地说,这是在自托管clojurescript中,在宏扩展时,
slurp
功能不可用。clojurescript宏是用Clojure语言编写的,其生命周期大致如下:
简而言之,宏应该返回对readFileSync的调用,而不是在宏运行时读取文件。如果您的代码在计算宏时确实需要读取某些文件,例如它们包含要输出的代码或其他内容,然后你需要使用Clojure表单来阅读那些文件,比如上面对
slurp
的调用。再次感谢amalloy修复了我的speelng和Gramarrr:-)也许问题中没有那么清楚,但我使用的是lumo,它是自托管的。在自托管中,slurp
函数在编译时不起作用。不清楚如何使用这些约束来实现这一点,抱歉:-/我希望有一些方法可以避免在这里使用宏并回避此问题。这些事情通常是由于“宏观传染”而发生的,可能是一种痛苦。