各位,先看代码:
(defmacro map-remove- [v w]
`(dosync
(ref-set ~v (dissoc @~v (keyword ~w)))))
(defmacro set-remove- [v w]
`(dosync
(ref-set ~v (disj @~v ~w))))
(defmacro clean- [v]
`(dosync
(ref-set ~v (empty @~v))))
它们现在工作正常,但我想编写一个更通用的宏来将“map-remove-”和“set-remove-”组合在一起。根据我的 C/Java 经验,我选择了“case”,但显然 case 不能在宏定义中使用,因为“未评估测试常量。它们必须是编译时文字”,以下代码将不起作用:
(defmacro [x]
(case (type x) ;;;;;;;;;;; This will never work!directly reach to default clause
....))
有人有什么建议吗?非常感谢。