我在 Clojure 中学习宏,并且对宏扩展有疑问。在 repl 中,当我这样做时:
user=> (defmacro unless [pred a b] `(if (not ~pred) ~a ~b))
#'user/unless
user=> (macroexpand-1 '(unless (> 5 3) :foo :bar))
(if (clojure.core/not (> 5 3)) :foo :bar)
但是当我在 clj 文件中做同样的事情时:
(ns scratch-pad.core
(:gen-class))
(defmacro unless [pred a b]
`(if (not ~pred) ~a ~b))
(defn -main [& args]
(prn
(macroexpand-1 '(unless (> 5 3) :foo :bar))))
并运行代码,我得到了这个:
$ lein run
(unless (> 5 3) :foo :bar)
如何让代码打印与 repl 相同?