clojure / script将宏扩展为'do'块内的多个'def'

时间:2016-02-06 21:06:06

标签: clojure macros clojurescript

不确定是否有效问题,但我正在学习宏,我正在尝试编写一个宏(对于clojurescript但应该是同样的事情)所以我可以在节点中做更好的js / require。

语法如下所示:

(import ["some-module" :as module1]
        ["some-other-module" :as module2])

它会扩展到:

(do 
   (def module1 (js/require "some-module")
   (def module2 (js/require "some-module"))

我的问题是:

在do块中做'def'是否可以? cljs似乎没有抱怨,但从宏观设计角度来看它是否可以?

1 个答案:

答案 0 :(得分:4)

是的,使用(do (def ...) (def ...))模式通常是def宏扩展中多个事物的唯一方法。