2012-03-27 56 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文件中。