1
我與clojure.spec嘗試,我想我會寫一個宏來節省一些繁瑣的打字:-)clojure:我如何將一個名稱空間作爲宏參數傳遞?
我試圖做到這一點:
(defmacro nup
[pns pname punit]
`(s/def :~pns/name (s/and #(string? %) #(= % ~pname)))
`(s/def :~pns/unit (s/and #(string? %) #(= % ~punit))))
我試過幾個版本,但我不能使名稱空間替換工作。有任何想法嗎?不用說,宏不是我的強項。
你不需要任何一個宏,只需在函數中執行's/def'即可。 – ClojureMostly