1
我有這個宏(從clojure-koans)應該允許使用中綴操作符:平等斷言失敗的macroexpand
(defmacro infix-better [form]
`(~(second form)
(first form)
(last form)))
它做什麼是應該的,但並不完全擴展到相同的表達。例如:
user=> (= '(* 10 2) (macroexpand '(infix-better (10 * 2))))
false
user=> '(* 10 2)
(* 10 2)
user=> (macroexpand '(infix-better (10 * 2)))
(* (clojure.core/first user/form) (clojure.core/last user/form))
最後的輸出將結束是(* 10 2)
當內表達式求值,但由於(clojure.core/first user/form)
平等的測試返回false,嚴格來說,是不是10
。
如何讓擴展的宏等於硬編碼的Clojure?