虽然clojure和clojurescript功能基本相同(除了明显的差异),但宏不是。当我想要一个clojurescript中的宏时,我必须在clojure中编写它并且需要它与require-macros。这是javascript的技术限制还是仅仅是设计决策?为什么两者都不能相同?
答案 0 :(得分:16)
来自ClojureScript: Up and Running的Stuart Sierra和Luker VanderHart,第69页:
在编译过程中应用宏。它们不存在 在运行时。因为 ClojureScript编译器是在Clojure中实现的,必须编写ClojureScript宏 在Clojure中,而不是ClojureScript。幸运的是,Clojure和ClojureScript几乎完全相同 当涉及到操纵数据结构时,所以在两种语言之间进行切换 不难。
这意味着宏代码是在Clojure世界而不是在浏览器中执行的,所以它必须用简单的Clojure编写。