我正在尝试在一个宏函数中创建一个原子,并将其引用嵌入到宏输出形式中
(defmacro x []
(let [a (atom {})]
`(fn []
~a)))
尝试使用此宏会导致此错误
`
(x)
Syntax error compiling fn* at (/tmp/form-init15982565344292085756.clj:1:1).
Can't embed object in code, maybe print-dup not defined: clojure.lang.Atom@350e9f50
`
我尝试定义一个空的 print-dup
重载,但得到不同的错误
`
(defmethod print-dup clojure.lang.Atom [x w])
(x)
Syntax error compiling fn* at (/tmp/form-init15982565344292085756.clj:1:1).
Can't embed unreadable object in code: clojure.lang.Atom@5f3623b3
`
由于Clojure有eval,预计这对应该工作。这里的问题是什么?