为什么clojurescript宏不能用clojurescript写?

时间:2013-08-22 12:52:41

标签: clojure clojurescript

虽然clojure和clojurescript功能基本相同(除了明显的差异),但宏不是。当我想要一个clojurescript中的宏时,我必须在clojure中编写它并且需要它与require-macros。这是javascript的技术限制还是仅仅是设计决策?为什么两者都不能相同?

1 个答案:

答案 0 :(得分:16)

来自ClojureScript: Up and Running的Stuart Sierra和Luker VanderHart,第69页:

  

在编译过程中应用宏。它们不存在   在运行时。因为       ClojureScript编译器是在Clojure中实现的,必须编写ClojureScript宏       在Clojure中,而不是ClojureScript。幸运的是,Clojure和ClojureScript几乎完全相同       当涉及到操纵数据结构时,所以在两种语言之间进行切换       不难。

这意味着宏代码是在Clojure世界而不是在浏览器中执行的,所以它必须用简单的Clojure编写。