我试图在宏函数中创建一个原子并在宏输出形式中嵌入对其的引用
(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,我本以为它会正常工作。这里的问题是什么?