我用我的一些宏的gensym
功能,則使得它很難測試:是否有可用於比較模式宏表單的工具/函數?
所以一些宏觀的擴張可能是:
'(let [G__10458 (js-obj)]
(aset G__10458 "a" (fn [] (? G__10458.val)))
(aset G__10458 "val" 3) G__10458)
我要的是測試它匹配了這種類型的彭定康:
'(let [%1 (js-obj)]
(aset %1 "a" (fn [] (? %1.val)))
(aset %1 "val" 3) %1)
有什麼東西在clojure.core.match
庫或做這個另一種模式匹配庫?
首先,寫出您的宏沒有gensym。繼續更新和測試宏,直到它做你想做的事。最後,添加gensym。 – WolfeFan 2013-05-02 14:22:02
我知道我可以做到這一點,但這不是我想要的 – zcaudate 2013-05-02 21:00:24
gensym是一種工具,當您的宏已經過了測試階段並且您將其投入到實際工作中時可以使用它。 gensym存在的全部原因是爲了防止在運行時命名衝突,當您仍在構建和測試宏時,這不是主要關心的問題。 – WolfeFan 2013-05-03 02:28:32