2012-03-27 32 views
4

我想在ClojureScript使用defmacro,但我发现了一个控制台错误:defmacro未在ClojureScript中定义?

TypeError: 'undefined' is not an object (evaluating 'crd.core.defmacro.call') 

这里是正在生成错误的测试代码:

(ns crd.core) 

(defmacro t [] `()) 

而生成的JavaScript代码:

goog.provide('crd.core'); 
goog.require('cljs.core'); 
crd.core.defmacro.call(null,crd.core.t,cljs.core.Vector.fromArray([]),null); 

我做错了什么指针?

+0

defmacro需要4个参数。看到这里:http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/defmacro – ceving 2012-03-27 11:22:22

+0

除非我错了,'doc-string'和'attr-map'是可选的,其中只留下'name','[params *]'和'body'。 – exupero 2012-03-27 13:44:21

回答

9

我的失败:我没看过Differences from Clojure。 ClojureScript不支持宏,但仅支持在与require-macros一起导入的.clj文件中。